现在的位置: 首页 > 综合 > 正文

MVC-数据验证

2013年10月11日 ⁄ 综合 ⁄ 共 1647字 ⁄ 字号 评论关闭

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="&#27880;&#20876;" />
</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();
}

抱歉!评论已关闭.