在提交表单时,如果在表单中使用SelectList进行数据绑定,可能会导致ModelState.IsValid属性始终为false。原因是表单提交后,ModelState会验证提交的数据是否与Model中的要求相符。如果表单中使用了SelectList,而Model中并没有定义该属性,则ModelState会标记该属性为无效。这时,如果Form中使用了默认的Model Binding,便会在ModelState.IsValid检查中触发false。解决办法是在Controller中手动验证表单中的数据。
示例代码:
[HttpPost]
public async Task
// 如果ModelState.IsValid为false,则手动验证并添加错误信息
if (Request.Form["MyProperty"].Count == 0)
{
ModelState.AddModelError("MyProperty", "MyProperty is required");
}
return View(model);
}