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