是否可以使用 绑定到集合ModelBinderAttribute
?
这是我的操作方法参数:
[ModelBinder(typeof(SelectableLookupAllSelectedModelBinder))] List<SelectableLookup> classificationItems
这是我的自定义模型绑定器:
public class SelectableLookupAllSelectedModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var model = bindingContext.Model as SelectableLookup ??
(SelectableLookup)DependencyResolver.Current.GetService(typeof(SelectableLookup));
model.UId = int.Parse(bindingContext.ValueProvider.GetValue(bindingContext.ModelName).AttemptedValue);
model.InitialState = true;
model.SelectedState = true;
return model;
}
}
这是此参数的已发布 JSON 数据:
"classificationItems":["19","20","21","22"]}
以下是 ValueProvider 的看法:
viewModel.classificationItems[0]
AttemptedValue = "19"
viewModel.classificationItems[1]
AttemptedValue = "20"
viewModel.classificationItems[2]
AttemptedValue = "21"
viewModel.classificationItems[3]
AttemptedValue = "22"
这目前不起作用,因为首先有一个前缀(“viewModel”)我可以整理出来,但其次bindingContext.ModelName
是“classificationItems”,它是绑定到的参数的名称,而不是列表中的索引项目,即“classificationItems [0]"
我应该补充一点,当我在 global.asax 中将此绑定器声明为全局 ModelBinder 时,它可以正常工作...