MVC动作名称选择器

当ActionInvoker选取Controller中Action时,默认会应用反射机制找到相同名字的方法,这个过程就是动作
名称选择器(Action Name Selector)运作的过程,选择查找过程对Action的名称字符大小写不进行区分。
代码:
public class EmptyTemplateController : Controller
{
public ActionResult Index()
{
return View();
}
}

有时,可能需要修改已完成方法的Action名称,但并不想修改已完成的方法,则可对Action对应方法使用ActionName属性进行修饰。
代码:
public class EmptyTemplateController : Controller
{
[ActionName(“OtherName”)]
public ActionResult Index()
{return View();
}
}
注意:通过此方法修改Action名称可能导致多个方法对应同一个Action名称,此错误不会在编译时被发现,仅能在运行时请求对应Action才引发异常,如下例所示代码将引发“对控制器类型‘EmptyTemplateController’的操作‘OtherName’的当前请求在下列操作方法之间不明确”的异常。
public class Emptylemp Controller : Controller
{
[ActionName(“OtherName””)]
public ActionResult Index()
{
return View();
}
[ActionName(“QtharName”)]
public ActionResult QtherAction()
{
return View();
}
}

ActionInvoker在选取Controller中的公开方法时,ASP.NET MVC还提供一个名为“动作方法选择器”(Action Method Selector)的特性,动作方法选择器应用在Controller中的方法上,以帮助ActionInvoker选择适当的Action。

NonAction属性:
如果将NonAction属性应用在Controller中的Action对应方法上,则此方法将不再作为Action而被Actionlnvoker选择执行,客户端请求此名称的Action则将返回一个404的错误信息。
public class EmptylempController: Controller
{
[NonAction]
public ActianRasult Index()
{
return View();
}
}
NonAction属性主要用来保护Controller中的特定public的方法不会被发布到Web上成为Action,或者是当对应的Action功能未开发完成时,暂时既不想公开又不想删除此方法。
将方法的“public”访问修饰符改为“private”,封闭方法也可以达到NonAction属性同样的作用。

HttpGet属性、HttpPost属性、HttpDelete属性和HttpPut属性:
HttpGet、HttpPost、HttpDelete、HttpPut属性是动作方法选择器的一部分,如果在Action上应用HttpPost属性,则此Action只会在收到HTTP Post请求时,才可以选择此Action;否则,客户端发送来的任何HTTP请求,对应Action都将会被选择并执行。

HttpGet属性、HttpPost属性、HttpDelete属性和HttpPut属性:
HttpGet、HttpPost、HttpDelete、HttpPut属性是动作这些属性通常会用于需要接收客户端窗口数据的时候,对于同名的Action,创建一个用于接收HTTP Get请求的Action用于显示窗口给用户提供填写数据的界面,另一个同名Action则应用[HttpPost]属性,用于接收用户发送来的数据,完成对应的功能实现。这种方法常用于Create、Edit等功能。
public class EmptyTemplateController : Controller
{
[HttpPost]
publicActionResult Create(EormCollection fc)
{
处理创建对象的实际业务过程
return RedirectToAction(“CreateResult”);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值