我已为ModelBinder
数组应用全局int
,如下所示:
public class IntArrayModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (string.IsNullOrEmpty(value?.AttemptedValue))
{
return null;
}
try
{
return value
.AttemptedValue
.Split(',')
.Select(int.Parse)
.ToArray();
}
catch (Exception e)
{
Console.WriteLine(e);
return null;
}
}
}
然后在IntArrayModelBinder
中注册global.asax.cs
,如下所示
ModelBinders.Binders.Add(typeof(int[]), new IntArrayModelBinder());
现在我想在特定的帖子操作中忽略这个模型绑定器并使用默认绑定。
我的ViewModel
是
public class AddListViewModel
{
public string[] SelectedNames { get; set; }
public int[] SelectedList { get; set; }
}
我的行动:
[HttpPost]
public JsonResult AddInList(AddListViewModel vm)
{
// code here
}
但SelectedList
的结果始终为空。绑定不起作用。如果我禁用全局自定义绑定,那么绑定工作正常。
我尝试将DefaultModelBinder
指定为如下,但没有成功
[HttpPost]
public JsonResult AddCompaniesInList(
[ModelBinder(typeof(DefaultModelBinder))]AddListViewModel vm)
{}
我甚至创建了另一个自定义默认活页夹来添加操作。但似乎默认绑定器会覆盖我的动作绑定器,结果始终为空。
如何忽略特定操作的默认全局绑定?