ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合。在进行数据验证的时候这个属性是比较有用的。在使用Html.ValidationMessage()的时候,就是从ViewData.ModelState中检测是否有指定的KEY,如果存在,就提示错误信息。
示例一: MVC默认验证模式. Index.asp Code <%=Html.ValidationSummary() %><%using (Html.BeginForm()){ %><table><tr><td>用户名:</td><td><%=Html.TextBox("UserName") %><%=Html.ValidationMessage("UserName") %></td></tr><tr><td>邮箱:</td><td><%=Html.TextBox("Email") %><%=Html.ValidationMessage("Email")%></td></tr><tr><td>密码:</td><td><%=Html.Password("Password") %><%=Html.ValidationMessage("Password")%></td></tr><tr><td>确认密码:</td><td><%=Html.Password("confirmPassword") %><%=Html.ValidationMessage("confirmPassword")%></td></tr><tr><td></td><td> <input type="submit" value="注册" /></td></tr></table><%} %>Controller Code
public ActionResult Index(){ ViewData["title"] = "用户注册"; return View();}[AcceptVerbs(HttpVerbs.Post)]public ActionResult Index(string UserName, string Email, string Password, string confirmPassword){ ViewData["title"] = "用户注册"; if (String.IsNullOrEmpty(UserName)) { ModelState.AddModelError("UserName", "用户名不能为空"); } string email="^[a-zA-Z][a-zA-Z0-9._-]*@([a-zA-Z0-9-_]+//.)+(cn|com|gov|net|com//.cn|edu//.cn)$"; if (String.IsNullOrEmpty(Email) || !Regex.IsMatch(Email, email)) { ModelState.AddModelError("Email", "邮箱不能为空或格式不对"); } if (Password == null || Password.Length <= 6) { ModelState.AddModelError("Password", "密码不能为空或长度不能小于6位"); } if (!String.Equals(Password, confirmPassword)) { ModelState.AddModelError("_FORM", "两次密码不一致"); } if (ViewData.ModelState.IsValid) {//验证通过则进行相应的动作 } return View();}