使用MVC5,我有一个int值不可为空并且不应为空的模型,但是我不希望模型联编程序自动需要该字段(视图绑定到一个列表<>然后在列表中任何一个项目可以是空的,因此不会保存到数据库),所以我设定的Application_Start()以下:当控制器验证错误返回视图时,AddImplicitRequiredAttributeForValueTypes = false不起作用
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
能正常工作时,我的视图最初显示,但当用户单击保存时,所有验证都会通过,然后控制器操作会执行其他跨记录验证(跨记录的总数必须等于100)。如果验证失败,然后我设置自定义错误并返回的观点:一旦总量修正
ModelState.AddModelError("", "Total Allocation must equal 100%.");
return View("Shipment", shipment);
,用户再次点击保存,现在
隐含要求确认开始在客户端发生并且永远不会将HttpPost发送回控制器
更正:隐式验证发生在服务器端,而不是客户端。这与我在Application_Start中关闭的隐式验证是一样的(我在调试模式下进行了检查,当View返回错误时它仍然是错误的)。
这是一个AddImplicitRequiredAttributeForValueTypes错误还是我做错了什么?
TIA -VG