在ActionFilters中访问由ModelBinders创建的对象

时间:2009-08-25 09:28:59

标签: asp.net-mvc

我不确定这是否可行,但我希望看到我的ModelBinders创建的对象,而不是将它们作为参数传递给我的Action方法。

即。我想注册一个FooBinder和一个BarBinder,然后用以下方法查看Foo

public void MyAction(Bar bar)

甚至理想情况下在ActionFilter中。

这可能吗?

1 个答案:

答案 0 :(得分:2)

要访问此内容:

 public ActionResult FizzAction(object foo) // <--
    {...}

在过滤器中使用此功能:

public class BarFilter : ActionFilterAttribute
{
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     var foo = filterContext.ActionParameters["foo"];
     //do whatever you want with it
 }
}

修改

对于ActionMethodSelectorAttribute,这可能会有所帮助:

 public class foo : ActionMethodSelectorAttribute
    {
        public override bool IsValidForRequest
            (ControllerContext controllerContext, MethodInfo methodInfo)
        {
            ValueProviderResult valueResult;
            controllerContext.Controller.ValueProvider  
                .TryGetValue("foo", out valueResult);
        }
    }

K. Scott Allen查看this blog post

没有保修 - 我自己没有使用过 - 只是通过观察窗口找到了。 :)