如何在OnActionExecuting中获取参数?

Ken*_*hou 11 asp.net-mvc

我稍微修改了默认路由规则如下:

routes.MapRoute(
  "Default",                                              // Route name
  "{controller}/{action}/{id}",                           // URL with parameters
  new { controller = "Home", action = "Index", id= (string)null }  // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)

然后我可以将url设置为:

/Controller/Action/myParam
/Home/Index/MyParam
Run Code Online (Sandbox Code Playgroud)

默认的动作索引是:

public ActionResult Index(string id)
{
  //....
}
Run Code Online (Sandbox Code Playgroud)

我可以在行动中获得参数.但我想在OnActionExecuting中获得参数.我该怎么做?

Çağ*_*kin 23

您应该能够访问它:

public override void OnActionExecuting(ActionExecutingContext filterContext) {
    string id = filterContext.RouteData.Values["id"];
    //...
}
Run Code Online (Sandbox Code Playgroud)

  • 这也通过ActionExecutingContext.ActionParameters属性公开.ActionParameters属性允许您查看或更改实际传递给action方法的参数. (6认同)