ASP.NET MVC3 ModelState.IsValid为false的问题

模型验证通常在submit后调用Action之前进行验证,eg:

public class ZhengXing
    {
        [Key]
        public int ZhengXingId { get; set; }                   //使用Key关键字要引用System.ComponentModel.DataAnnotations

[DisplayName("标题")]
        [Required(ErrorMessage = "请输入标题")]
        [MaxLength(60, ErrorMessage = "标题长度不能大于60个字符.")]
        public string Title { get; set; }

[DisplayName("内容")]
        [Required(ErrorMessage = "请输入内容")]
        [MaxLength(8000, ErrorMessage = "内容长度不能大于8000个字符.")]
        public string Content { get; set; }

[DisplayName("作者")]
        [Required(ErrorMessage = "作者不能为空")]
        public string Author { get; set; }

[DisplayName("创建时间")]
        public DateTime CreateDate { get; set; }

[DisplayName("阅读次数")]
        public int ClickCount { get; set; }
    }
}

public ActionResult Create([Bind(Exclude="ZhengXingId")]ZhengXing zhengxing)
        {
            zhengxing.Author = Session["UserName"].ToString();
            zhengxing.CreateDate = DateTime.Now;
            if (ModelState.IsValid)
            {
                db.ZhengXings.Add(zhengxing);
                db.SaveChanges();
                return RedirectToAction("ManageIndex");
            }
            else
                return View(zhengxing);
        }

ZhengXing模型里面有Title,Content,Author,CreateDate,ClickCount这几个字段,但是在create页面仅仅给title和content赋值,并没有给Author和CreateDate赋值,而是在后台赋值,但是每次ModelState.IsValid都为false,最后终于发现问题了,只要将模型里的[Required(ErrorMessage = "作者不能为空")]注释掉就行。

最终总结:ModelState.IsValid的验证是在Submit后Action调用前进行模型验证。

ASP.NET MVC3 ModelState.IsValid为false的问题

时间: 2024-10-10 17:58:42

ASP.NET MVC3 ModelState.IsValid为false的问题的相关文章

ModelState.IsValid返回false解决办法

ModelState.IsValid一直返回false时,怎么查找都找不到原因,可以通过如下方法查找出到底是哪个地方出的错误,对症下药 public static List<string> GetErrorListFromModelState (ModelStateDictionary modelState) { var query = from state in modelState.Values from error in state.Errors select error.ErrorMe

ModelState.IsValid为false时的查找方法

if (!ModelState.IsValid) { List<string> sb = new List<string>(); //获取所有错误的Key List<string> Keys = ModelState.Keys.ToList(); //获取每一个key对应的ModelStateDictionary foreach (var key in Keys) { var errors = ModelState[key].Errors.ToList(); //将错误

Mvc ModelState.isValid为false时,检查时那个字段不符合规则的代码

List<string> sb = new List<string>(); //获取所有错误的Key List<string> Keys = ModelState.Keys.ToList(); //获取每一个key对应的ModelStateDictionary foreach (var key in Keys) { var errors = ModelState[key].Errors.ToList(); //将错误描述添加到sb中 foreach (var error

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; }

modelstate.isvalid false

http://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why 第一个 About "can it be that 0 errors and IsValid == false": here's MVC source code fromhttp://aspnet.codeplex.com/sourcecontrol/changeset/view/23011?projectName=aspnet#266501

ModelState.IsValid一直为false的原因

一,问题:ModelState.IsValid一直为false 二,解决方法和原因, 由于这个方法中传过来的RegisterForm模型的字段,某一个为空值,则会造成这个验证验证为false,去注释掉空的字段即可验证通过

asp.net core mvc 中 ModelState.IsValid 值是fasle

问题描述:ModelState.IsValid 值是fasle 可能是Model绑定的模型里面的内容不能为空,但是实际上是空的. 原文地址:https://www.cnblogs.com/xiaobudong/p/10102161.html

ASP.NET MVC3中Controller与View之间的数据传递总结

</pre>在ASP.NET MVC<span style="font-family:宋体">中,经常会在</span>Controller<span style="font-family:宋体">与</span>View<span style="font-family:宋体">之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨:&

ASP.NET MVC3中Controller与View之间的数据传递

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: [csharp] view plain copy print? ViewData["Message_ViewData"] = " Hello ViewData!"; Vi