ModelState

https://www.cnblogs.com/basterdaidai/p/6679849.html

 

ASP.NET MVC里ModelState.IsValid总是true或者总是false
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了。

posted @ 2021-06-13 09:11  .net&new  阅读(46)  评论(0编辑  收藏  举报