MVC4 Model ControllerDescriptor

1、 ControllerDescriptor 的描述

     Controller  的Action 方法有以下一些特性:

    1.1 ActionNameAttribute特性  他继承自 System.Web.Mvc.ActionNameSelectorAttribute 抽象类 

  ActionNameSelectorAttribute  通过 其 抽象方法 IsValidName   判断指定的Action名称是否与目标Action方法相匹配。

   如下代码片段:

     添加了 ActionNameAttribute 特性后 访问Action 就会匹配 ActionName 而不是 ActionNames 注意Aciton方法后面多了个“s”

        [ActionName("ActionName")]
        public ActionResult ActionNames()
        {
            return Json("", JsonRequestBehavior.AllowGet);
        }

     ActionNameSelectorAttribute  与ActionMethodSelectorAttribute 区别: 两者都有Action筛选的作用, 前者是针对Action名称 后者是针对 请求是否匹配

     1.2 ActionMethodSelectorAttribute 的类型有7种(:

    HttpGet,HttpPost,HttpPut,HttpDelete,HttpHead,HttpOption,HttpPatch. 如下代码片段:

     [HttpGet]
        public ActionResult HttpMethod()
        {
            return Content("ActionMethodSelectorAttribute ");
        }

     1.3 AcceptVerbsAttribute 特性, 其与ActionMethodSelectorAttribute 不同之处在 它可以同时匹配多个HTTP方法,如下代码片段:

    这样就可以同时使用POST 或 GET 方式请求, 如果去掉Get  就只能使用Post请求。

   [AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]   
    public ActionResult AcceptVerbs()
    {
     return Json("", JsonRequestBehavior.AllowGet);
    }

  1.4 NonActionAttribute 特性:

   设置了 NonActionAttribute 特性的 Action 方法 在请求的时候,该方法总是被排除在候选范围之外,如下代码片段

     当添加了NonActionAttribute特性后 访问就会出现 HTTP 404。 错误

 [NonAction]
  public ActionResult NonActions()
  {
    return Content("NonActionAttribute");
   }

2.ActionDescriptor 

3.ParameterDescriptor

原文地址:https://www.cnblogs.com/dragon-L/p/5246686.html