ASP.NET MVC3 ModelState.IsValid为false的问题
2012-03-31 21:24
330 查看
模型验证通常在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调用前进行模型验证。
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的问题
- modelstate.isvalid false
- MVC 2 的验证问题:ModelState.IsValid
- ModelState.IsValid总为false原因
- if(modelstate.isvalid)这句话是啥意思呀????求解释!!!!!
- ModelState.IsValid always returning true while mocking a request
- ModelState.IsValid
- 为什么mvc里面的ModelState.IsValid一只都是true
- ModelState.IsValid
- 2016年10月25 草堂随笔1 ModelState.IsValid
- ModelState.IsValid
- ModelState.IsValid 验证时忽略某些字段验证
- 受够了if (ModelState.IsValid)?ActionFitlter也是一路的坑啊!
- ASP.NET MVC单元测试时如何对含有ModelState.IsValid的Action进行测试
- 解决java web项目出现的有关问题 -cannot be read or is not a valid ZIP file
- 'Infinity' is not a valid numeric or approximate numeric value 异常问题
- 遇到问题-----uploadify上传文件ServletFileUpload.isMultipartContent(request)为false
- 解决User.Identity.IsAuthenticated==false 或User.Identity.Name==string.empty的问题[转]
- tomcat连接mysql的1个问题解决:问题是:com.mysql.jdbc.Connection.isValid(I)Z问题
- valid states are 'starting running'. the machine is in the 'poweroff' state 的解决