使用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