EnableClientValidation不起作用

时间:2011-03-03 19:09:37

标签: asp.net-mvc

为什么客户端验证不起作用?

<script src="<%: Url.Content("~/Scripts/jquery-1.4.1.min.js")%>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/MicrosoftAjax.js")%>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/MicrosoftMvcValidation.js")%>" type="text/javascript"></script>
<h2>Criar</h2>
<h2>Login</h2>
Faça login aqui
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm())
   { %>
<%: Html.ValidationSummary(false) %>
<%: Html.LabelFor(x => x.Nome) %><%: Html.EditorFor(x => x.Nome) %>
<%: Html.LabelFor(x => x.Email) %><%: Html.EditorFor(x => x.Email) %>
<%: Html.LabelFor(x => x.Senha) %><%: Html.EditorFor(x => x.Senha) %>
<%: Html.LabelFor(x => x.ConfirmacaoSenha) %><%: Html.EditorFor(x => x.ConfirmacaoSenha) %>
<input type="submit" value="Criar Conta" />
<% } %>

这是模型类:

public class CadastroViewModel
    {
        [Required(ErrorMessage = "Por favor digite seu nome")]
        public string Nome { get; set; }
        [Required(ErrorMessage = "Por favor digite seu e-mail")]
        [RegularExpression(".+\\@.+\\..+", ErrorMessage = "Por favor entre com um e-mail válido")]
        public string Email { get; set; }
        [Required(ErrorMessage = "Por favor digite sua senha")]
        public string Senha { get; set; }
        [Required(ErrorMessage = "Por favor confirme sua senha")]
        [DisplayName("Confirmação de Senha")]
        public string ConfirmacaoSenha { get; set; }
    }

2 个答案:

答案 0 :(得分:2)

您需要添加ValidationMessageFor帮助程序以启用客户端验证:

<%: Html.LabelFor(x => x.Nome) %>
<%: Html.EditorFor(x => x.Nome) %>
<%: Html.ValidationMessageFor(x => x.Nome) %>

<%: Html.LabelFor(x => x.Email) %>
<%: Html.EditorFor(x => x.Email) %>
<%: Html.ValidationMessageFor(x => x.Email) %>

<%: Html.LabelFor(x => x.Senha) %>
<%: Html.EditorFor(x => x.Senha) %>
<%: Html.ValidationMessageFor(x => x.Senha) %>

<%: Html.LabelFor(x => x.ConfirmacaoSenha) %>
<%: Html.EditorFor(x => x.ConfirmacaoSenha) %>
<%: Html.ValidationMessageFor(x => x.ConfirmacaoSenha) %>

答案 1 :(得分:1)

ValidationSummary不适用于客户端验证。您必须为每个元素添加ValidationMessageFor。

e.g。

<%: Html.LabelFor(x => x.Nome) %><%: Html.EditorFor(x => x.Nome) %>  <%: Html.ValidationMessageFor(x => x.Nome)%>