ASP.NET MVC裡ModelState.IsValid總是true或者總是false
阿新 • • 發佈:2018-12-26
model的屬性如果不加驗證相關的特性,ModelState.IsValid會永遠為true;如果加了驗證相關的特性,不滿足驗證規則時,ModelState.IsValid為false.
接收到引數屬性型別與Model定義不符時,ModelState.IsValid也會為false.
引數模型:
public class PersonModel { public string FirstName { get; set; } public string LastName { get; set; } public int Status { get; set; } }
控制器程式碼:
[HttpPost] public string ReceivePerson(PersonModel model) { if (!ModelState.IsValid) { var msg = string.Empty; foreach(var value in ModelState.Values) { if(value.Errors.Count>0) { foreach(var error in value.Errors) { msg = msg + error.ErrorMessage; } } } return msg; } else return "成功"; } public string Index() { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); }
當給Status傳一個“*”時,ModelState.IsValid為false,錯誤資訊為:值“*”對於 Status 無效。
如果給某個Model的某個欄位加上驗證特性,比如LastName必需:
public class PersonModel { public string FirstName { get; set; } [Required()] public string LastName { get; set; } public int Status { get; set; } }
當LastName為空時,可以看到ModelState.IsValid為false,錯誤資訊為:LastName 欄位是必需的。
現在可以知道ModelState.IsValid總是為false或總是為true了。