我不确定这是否可行,但我希望看到我的ModelBinders创建的对象,而不是将它们作为参数传递给我的Action方法。
即。我想注册一个FooBinder和一个BarBinder,然后用以下方法查看Foo
public void MyAction(Bar bar)
甚至理想情况下在ActionFilter中。
这可能吗?
答案 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。
没有保修 - 我自己没有使用过 - 只是通过观察窗口找到了。 :)