Estou com alguns problemas com a validação de um email.
No meu modelo:
[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }
Na minha opinião:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail"}) <br />
@Html.ValidationMessageFor(m => m.ReceiverMail)
Agora, ele está me mostrando corretamente "O campo não pode estar vazio" quando você deixa o campo em branco. Mas quando você preenche um endereço de e-mail inválido como: "fwenrjfw", o formulário não diz "E-mail não é válido".
Como posso obter o formulário para validar a entrada como um endereço de email? Estou procurando alguma ajuda com isso.
c#
asp.net-mvc
validation
email-validation
Java Afca
fonte
fonte
[DataType(DataType.EmailAddress, ErrorMessage = "Error message.")]
DataType.EmailAddress
não é sobre validação. Trata-se de apresentação de dados ...name@xxx
é um endereço de email completamente válido, portanto não há nada errado com esse método. Considere o exemplo,username@localhost
por exemplo.Tente o
Html.EditorFor
método auxiliar em vez deHtml.TextBoxFor
.fonte
Você precisa usar o atributo RegularExpression, algo como isto:
E não exclua [Obrigatório] porque [Expressão regular] não afeta campos vazios.
fonte
se você ainda não estiver usando o .net 4.5:
Então você pode fazer isso:
fonte
Eu uso o MVC 3. Um exemplo de propriedade de endereço de email em uma das minhas classes é:
Remova o
Required
se a entrada for opcional. Não há necessidade de expressões regulares, embora eu tenha uma que cubra todas as opções em um endereço de e-mail até o nível RFC 2822 (é muito longo).fonte
[EmailAddress]
e você precisa terusing System.ComponentModel.DataAnnotations;
Email
ouRegularExpression
torna o campo obrigatório. A remoção daRequired
anotação não tem efeito. Alguma sugestão sobre o que fazer para tornar os campos comRegularExpression
validação aceitar campos vazios?fonte
fonte
Os scripts geralmente são carregados no final da página html, e o MVC recomenda o uso de pacotes, apenas dizendo. Então, minha melhor aposta é que você
jquery.validate
arquivos foram alterados de alguma forma ou não são atualizados para a versão mais recente, pois validam as entradas de email.Então você pode atualizar / atualizar seu pacote nuget ou escrever sua própria função, realmente.
Aqui está um exemplo que você adicionaria em um arquivo extra depois
jquery.validate.unobtrusive
:Isso é apenas uma cópia e colagem do
jquery.validate
Regex atual , mas dessa maneira você pode definir sua mensagem de erro personalizada / adicionar métodos extras aos campos que você deseja validar no futuro próximo.fonte
Conforme descrito acima, isso corrigirá a validação no servidor de um endereço de email:
Contudo...
Se você estiver usando a validação do lado do cliente JQuery, deverá saber que o Email valida diferentemente do lado do servidor (validação do modelo) para o lado do cliente (validação do JQuery). Nesse teste @ exemplo (um endereço de e-mail de domínio de nível superior) falhava no lado do servidor, mas validava bem no lado do cliente.
Para corrigir essa disparidade, você pode substituir a validação de email padrão do lado do cliente da seguinte maneira:
fonte