描述
不,默认模型绑定器不能做到这一点。您可以创建一个自定义模型绑定器来处理它。假设您的输入字段名称是items
我的示例应该可以工作,如果没有将其更改为正确的名称。
样本
public class MyCustomModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
List<int> result = new List<int>();
var value = bindingContext.ValueProvider.GetValue("items").AttemptedValue;
foreach (string i in value.Split(",".ToCharArray()))
{
int a;
if (Int32.TryParse(i, out a))
result.Add(a);
}
return result;
}
}
public ActionResult SomeAction([ModelBinder(typeof(MyCustomModelBinder))] List<int> list)
更多信息
更新
您可以在以下位置注册您的自定义模型绑定器global.asax
ModelBinders.Binders.Add(typeof(List<int>), new MyCustomModelBinder());
List<int>
但请注意,如果您的 Action Method 中有,这将始终尝试绑定。
根据您的评论:目前,无法说默认模型绑定器可以做到这一点,因为他尝试绑定属性并且不知道您何时要绑定List<int>
,何时不绑定。
你可以看到DefaultModelBinder
这里的来源