Mam problemy z weryfikacją wiadomości e-mail.
W moim modelu:
[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }
Według mnie:
<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)
Teraz poprawnie wyświetla mi „Pole nie może być puste”, gdy zostawisz to pole puste. Ale kiedy wypełnisz nieprawidłowy adres e-mail, taki jak: "fwenrjfw", formularz nie powie "E-mail jest nieprawidłowy".
Jak mogę otrzymać formularz potwierdzający wprowadzone dane jako adres e-mail? Szukam pomocy w tym.
c#
asp.net-mvc
validation
email-validation
Java Afca
źródło
źródło
[DataType(DataType.EmailAddress, ErrorMessage = "Error message.")]
DataType.EmailAddress
nie dotyczy walidacji. Chodzi o prezentację danych ...name@xxx
to całkowicie poprawny adres e-mail, więc nie ma nic złego w tej metodzie. Rozważmyusername@localhost
przykład.Spróbuj
Html.EditorFor
pomocnika metody zamiastHtml.TextBoxFor
.źródło
Musisz użyć atrybutu RegularExpression, coś takiego:
I nie usuwaj [Wymagane], ponieważ [RegularExpression] nie wpływa na puste pola.
źródło
jeśli nie używasz jeszcze .net 4.5:
Następnie możesz to zrobić:
źródło
Używam MVC 3. Przykładem właściwości adresu e-mail w jednej z moich zajęć jest:
Usuń,
Required
jeśli dane wejściowe są opcjonalne. Nie ma potrzeby używania wyrażeń regularnych, chociaż mam takie, które obejmuje wszystkie opcje w adresie e-mail do poziomu RFC 2822 (jest bardzo długi).źródło
[EmailAddress]
i trzeba miećusing System.ComponentModel.DataAnnotations;
Email
lubRegularExpression
sprawia, że pole jest wymagane. UsunięcieRequired
adnotacji nie ma żadnego efektu. Jakieś sugestie, co zrobić, aby pola zRegularExpression
walidacją akceptowały puste pola?źródło
źródło
Skrypty są zwykle ładowane na końcu strony html, a MVC zaleca używanie pakietów, mówiąc tylko. Więc najlepiej mogę założyć, że twoje
jquery.validate
pliki zostały w jakiś sposób zmienione lub nie zostały zaktualizowane do najnowszej wersji, ponieważ sprawdzają poprawność wprowadzanych wiadomości e-mail.Możesz więc zaktualizować / odświeżyć pakiet nuget lub napisać własną funkcję, naprawdę.
Oto przykład, który można dodać w dodatkowym pliku po
jquery.validate.unobtrusive
:To jest tylko kopiowanie i wklejanie obecnego
jquery.validate
Regex, ale w ten sposób możesz ustawić swój niestandardowy komunikat o błędzie / dodać dodatkowe metody do pól, które możesz chcieć zweryfikować w najbliższej przyszłości.źródło
Zgodnie z powyższym naprawi to weryfikację adresu e-mail po stronie serwera:
Jednak...
Jeśli używasz walidacji po stronie klienta JQuery, powinieneś wiedzieć, że wiadomość e-mail waliduje inaczej po stronie serwera (walidacja modelu) i po stronie klienta (walidacja JQuery). W tym teście @ example (adres e-mail domeny najwyższego poziomu) nie powiodło się po stronie serwera, ale po stronie klienta zostałby sprawdzony poprawnie.
Aby naprawić tę rozbieżność, możesz zastąpić domyślną weryfikację adresu e-mail po stronie klienta w następujący sposób:
źródło