ASP.NET MVC中对Model进行分步验证的解决方法2011-08-28 博客园 朱祁林在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用 户的注册分成了四步,而这四个步骤都是在完善一个Model的信息,但是又分页面 填写信息的,当时我加上ModelState.IsValid这句验证代码的时候,根本没法通 过验证,因为在注册的前面三步,注册用户的Model信息都没填写完整,而 ModelState.IsValid是对一个实体的所有属性进行判断验证的。当时很纠结,因 为刚接触Asp.net MVC,故没有找到解决方案。这篇文章将给出解决的办法。看下 面需要验证的Model的代码如下:代码public class UserViewModel { [DisplayName("step")] [Required(ErrorMessage = "You must select a step .")] public int Step { get; set; } //个人信息 [Required (ErrorMessage = "姓名不能为空")] [StringLength(20, ErrorMessage = "姓名长度不能超过20个字符")] public string Name { get; set; } [RegularExpression(@"120|((1[0-1]|d)?d)", ErrorMessage = " 年龄格式不对")] public int? Age { get; set; } //职位信息 [Required(ErrorMessage = "职位不能为空")] public string Post { get; set; } public int? Salary { get; set; } //学历 信息 [Required(ErrorMessage = "毕业院校不能为空")] public string University { get; set; } public int? GraduationYear { get; set; } //联系信息 [Required(ErrorMessage = "邮件不能为 空")] [RegularExpression(@"^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a- z|" + @"0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*.([a-z]" + @"[a- z|0-9]*(.[a-z][a-z|0-9]*)?)$", ErrorMessage= "邮件格式不正确")] public string Email { get; set; } public int? Mobile { get; set; } public IEnumerable<SelectListItem> StepList { get; set; } public UserViewModel() { var list = new List<SelectListItem>() { new SelectListItem { Text = "(Select)" }, new SelectListItem { Value = "1", Text = "Step1" }, new SelectListItem { Value = "2", Text = "Step2" }, new SelectListItem { Value = "3", Text = "Step3" }, new SelectListItem { Value = "4", Text = "Step4" } }; this.StepList = new SelectList(list, "Value", "Text"); }