使用自定义模型绑定器作为控制器操作的参数

时间:2010-09-01 22:14:26

标签: asp.net-mvc modelbinders

我有一个控制器动作,如下所示:

public ActionResult DoSomethingCool(int[] someIdNumbers)
{
    ...
}

我希望能够使用自定义模型绑定器从客户端上的复选框列表中创建该ID数组。有没有办法绑定到那个参数?另外,有没有办法让模型绑定器发现正在使用的参数的名称?例如,在我的模型绑定器中,我很想知道参数的名称是“someIdNumbers”。

2 个答案:

答案 0 :(得分:11)

ModelBinder属性可以应用于操作方法的各个参数:

public ActionResult Contact([ModelBinder(typeof(ContactBinder))]Contact contact)

此处,contact参数使用ContactBinder绑定。

答案 1 :(得分:6)

要发现参数的名称,可以使用ModelBindingContext.ModelName属性

public class MyModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var thisIsTheArgumentName = bindingContext.ModelName;
    }
}