ASP.NET MVC里ModelState.IsValid总是true或者总是false

  1. 概述
    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 无效。
ASP.NET MVC里ModelState.IsValid总是true或者总是false_第1张图片
如果给某个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 字段是必需的。

ASP.NET MVC里ModelState.IsValid总是true或者总是false_第2张图片

现在可以知道ModelState.IsValid总是为false或总是为true了。

这里写图片描述
个人微信公众号,欢迎大家关注。

转载自:https://www.cnblogs.com/basterdaidai/p/6679849.html

你可能感兴趣的:(ASP.NET,MVC)