023-动作方法选定器
当通过ActionInvoker选定Controller内的公开方法时,ASP.NET还提供一个名为“动作方法选择器”的特性,以便ActionInvoker选择适当的Action。
1.NonAction特性
如果将NonAction特性应用在Controller中的Action对应方法上,则ActionInvoker将不会选定这个Action来运行。这个特性的主要用途是用来保护Controller中的特定公开方法不要发布到Web上,或是功能尚未开发完成就要进行部署,暂时不想将此方法删除,就可以套用这个特性不要对外公开。
[NonAction] public ActionResult Index() { return View(); }
将Action方法的public更改成private,也可以达到完全相同的目的:
private ActionResult Index() { return View(); }
2.HTTP动词限定特性
动作方法选定器还有HttpGet、HttpPost、HttpDelete、HttpPut、HttpHead、HttpOptions、HttpPatch特性。
(1)HttpGet
如果在Action上应用HttpGet特性,则代表只有当客户端浏览器发送HTTP GET请求时,ActionInvoker才会选择此动作。
[HttpGet] public ActionResult Index() { return View(); }
(2)HttpPost
如果在Action上应用HttpPost特性,则代表只有当客户端浏览器发送HTTP Post请求时,ActionInvoker才会选择此动作。
相反的,如果你的动作方法上面都没有套用这些动作限定特性的话,不管客户端浏览器发送任意HTTP动词都会自动选定到对应的Action。
这些特性最常用在需要接收窗体信息的时候, 你可以创建两个同名的Action,一个套用HttpGet特性,以显示窗体HTML,另一个套用HttpPost,以接收窗体输出的值。