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>
<%} %>
<%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();
}
{
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();
}