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了。