0
我不确定这是否可能,但我希望看到由我的ModelBinders创建的对象,而不是将它们作为参数传递给我的Action方法。在ActionFilters中访问由ModelBinders创建的对象
I.e.我想注册一个FooBinder和BarBinder,然后看一个Foo下面的方法
public void MyAction(Bar bar)
或一个ActionFilter甚至理想。
这可能吗?
我不确定这是否可能,但我希望看到由我的ModelBinders创建的对象,而不是将它们作为参数传递给我的Action方法。在ActionFilters中访问由ModelBinders创建的对象
I.e.我想注册一个FooBinder和BarBinder,然后看一个Foo下面的方法
public void MyAction(Bar bar)
或一个ActionFilter甚至理想。
这可能吗?
要访问此:在你的过滤器
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.斯科特艾伦this blog post。
没有保修 - 没有使用过我自己 - 只是通过观察窗口找到。 :)
谢谢Arnis。绝对是正确的答案。不过,我刚刚意识到它实际上不是我想访问的ActionFilter,而是一个ActionMethodSelectorAttribute。我猜这是不可能的...? – Gaz 2009-08-25 09:45:03
片刻.. – 2009-08-25 09:58:49
编辑我的帖子。我希望它有帮助。 – 2009-08-25 10:10:03