使用自定义的模型绑定为一个控制器动作
问题描述:
我有一个控制器的动作看起来的参数,如:使用自定义的模型绑定为一个控制器动作
public ActionResult DoSomethingCool(int[] someIdNumbers)
{
...
}
我希望能够使用自定义的模型绑定的创建的ID从阵列客户端上的复选框列表。有没有一种方法可以绑定到这个参数?另外,有没有一种方法让模型联编程序发现正在使用的参数的名称?例如,在我的模型绑定器中,我很想知道参数的名称是“someIdNumbers”。
答
要发现你可以使用ModelBindingContext.ModelName财产
public class MyModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var thisIsTheArgumentName = bindingContext.ModelName;
}
}
答
的ModelBinder
属性可以被应用到操作方法的各个参数的参数的名称:
public ActionResult Contact([ModelBinder(typeof(ContactBinder))]Contact contact)
在这里,使用ContactBinder
绑定参数contact
。
这种方法对于重复使用多个不同参数的相同绑定程序非常方便。 – jonnybot 2015-08-06 15:12:14