2009-12-25 114 views
13

如果在动作方法中有模型绑定参数,如何在动作过滤器中获取该参数?ASP.NET MVC ActionFilter参数绑定

[MyActionFilter] 
public ActionResult Edit(Car myCar) 
{ 
    ... 
} 

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     //I want to access myCar here 
    } 

} 

有没有办法让myCar没有经过Form变量?

+0

这里是一个伟大的文章,解释了如何访问ActionParameters授权用途:http://www.joe-stevens.com/2010/ 08/19/asp-net-mvc-authorize-attribute-using-action-parameters-with-the-actionfilterattribute/ – 2013-04-17 18:05:57

回答

11

不确定OnActionExecuted,但你可以做到这一点在OnActionExecuting:

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // I want to access myCar here 

     if(filterContext.ActionParameters.ContainsKey("myCar")) 
     { 
      var myCar = filterContext.ActionParameters["myCar"] as Car; 

      if(myCar != null) 
      { 
       // You can access myCar here 
      } 
     } 
    } 
} 
+1

我不认为你可以在那里使用ActionFilter,它是ActionFilterAttribute。你在哪里获得了ActionExecutedContext上的ActionParameters属性? – 2009-12-25 16:32:44

+0

谢谢,它是ActionFilterAttribute - 你是对的。我没有注意到这个问题是关于OnActionExecuted的。 – 2009-12-25 16:42:52

+0

谢谢你们。编辑我的原始问题,以表明ActionFilterAttribute。 – Shlomo 2009-12-25 17:06:04