Asp.net-Mvc
Asp.NET MVC ModelBinder,獲取 Action 方法
我有一個自定義的 ModelBinder,我想採取行動。因為我想使用反射來獲取動作的屬性,所以動作名稱是不夠的。
我的行動方法:
[MyAttribute] public ActionResult Index([ModelBinder(typeof(MyModelBinder))] MyModel model) { }這裡是一個典型的 ModelBinder
public class MyModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { // here i would like to get the action method and his "MyAttribute" } }任何建議,其他解決方案?
提前謝謝了
不,您不能 100% 確定地從模型活頁夾中獲取目前操作。模型綁定器不耦合到動作,而是綁定到模型。例如,您可以呼叫
TryUpdateMode(model)在選擇操作之前的過濾器中。另請注意,動作方法甚至可能不是可以反映的 CLR 方法(請參閱http://haacked.com/archive/2009/02/17/aspnetmvc-ironruby-with-filters.aspx )。
我認為真正的問題是,您到底想完成什麼,這是正確的方法嗎?如果您希望將操作中的資訊傳遞給模型綁定器(注意如果資訊不存在,模型綁定器應該優雅降級的建議),您應該使用操作過濾器將資訊放入 HttpContext.Items (或類似的地方),然後讓你的活頁夾取回它。
動作過濾器的 OnActionExecuting 方法接收具有 ActionDescriptor 的 ActionExecutingContext。你可以呼叫 GetCustomAttributes 。