码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-04-10 11:38:52      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:span   ges   for   .com   string   receive   erro   定义   datetime   

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

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

标签:span   ges   for   .com   string   receive   erro   定义   datetime   

原文地址:http://www.cnblogs.com/basterdaidai/p/6679849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!