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

Jas*_*son 5 asp.net-mvc modelbinders

我有一个控制器动作,看起来像:

public ActionResult DoSomethingCool(int[] someIdNumbers)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

bzl*_*zlm 11

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

public ActionResult Contact([ModelBinder(typeof(ContactBinder))]Contact contact)
Run Code Online (Sandbox Code Playgroud)

这里,contact参数绑定使用ContactBinder.


Luk*_*ith 6

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

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