ASP.NET Core MVC ModelState的使用

原创 Laughing  2017-10-29 17:02  阅读 871 次 评论 0 条

使用过MVC的童鞋一定对于ModelState不陌生,ModelState其实是一个字典,我们在平时使用的最多的应该就是ModelState.IsValid属性验证模型是否有错误了。

ModelState.IsValid

ModelState.IsValid属性用于获取模型的验证结果,如果模型所有的属性验证都成功的话,ModelState.IsValid返回true,否则返回false。

ModelState的验证原理是统计ModelState.Error字典来判断的,如果字典的数据项大于0,代表有错误。所以除了通过ModelState.IsValid属性判断是否有错误外,我们通过Error字典,也可以手工判断模型的某一个属性是否包含错误。

判断模型某一属性是否包含错误

如下代码,分别判断产品名称ProductName和产品价格Price是否验证不通过

  1. if (ModelState.ContainsKey("ProductName"))  
  2.             {  
  3.                 if (ModelState["ProductName"].Errors.Count() > 0)  
  4.                 {  
  5.   
  6.                 }  
  7.             }  
  8.             if(ModelState.ContainsKey("Price")){  
  9.                 if(ModelState["Price"].Errors.Count()>0){  
  10.                     Console.WriteLine(ModelState["Price"].Errors.Count());  
  11.                 }  
  12.             }  

除了通过模型绑定设置错误之外,我们通过后台代码,也可以验证属性,然后手工加入错误信息

通过ModelState.AddModelError()加入错误

例如,当产品的价格Price大于10时,我们给出提示

  1. if(product.Price - 10 >0){  
  2.                ModelState.AddModelError("Price","金额不能大于10");  
  3.            }  

清空ModelState

如果我们需要在服务端验证之后清空ModelState的值,可以通过Clear()方法进行全部清空,或者通过ClearValidationState()方法清空特定项。

  1. ModelState.Clear();  
  2.             ModelState.ClearValidationState("Price");  
本文地址:https://www.lisen.me/the-use-of-asp-net-core-mvc-modelstate.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情