У меня есть некоторые проблемы с проверкой электронной почты.
В моей модели:
[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }
На мой взгляд:
<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)
Теперь он правильно показывает мне «Поле не может быть пустым», когда вы оставляете поле пустым. Но когда вы вводите неправильный адрес электронной почты, например: «fwenrjfw», то в форме не появляется «E-mail is not valid».
Как я могу получить форму для подтверждения ввода в качестве адреса электронной почты? Я ищу некоторую помощь с этим.
c#
asp.net-mvc
validation
email-validation
Ява Афка
источник
источник
[DataType(DataType.EmailAddress, ErrorMessage = "Error message.")]
DataType.EmailAddress
не о проверке. Речь идет о представлении данных ...name@xxx
- это полностью действующий адрес электронной почты, поэтому с этим методом все в порядке. Рассмотрим примерusername@localhost
для примера.Попробуйте
Html.EditorFor
вспомогательный метод вместоHtml.TextBoxFor
.источник
Вам нужно использовать атрибут RegularExpression, что-то вроде этого:
И не удаляйте [Обязательный], потому что [RegularExpression] не влияет на пустые поля.
источник
если вы еще не используете .net 4.5:
Тогда вы можете сделать это:
источник
Я использую MVC 3. Пример свойства адреса электронной почты в одном из моих классов:
Удалите,
Required
если ввод является необязательным. Нет необходимости в регулярных выражениях, хотя у меня есть один, который охватывает все параметры в адресе электронной почты до уровня RFC 2822 (это очень долго).источник
[EmailAddress]
и нужно иметьusing System.ComponentModel.DataAnnotations;
Email
или другогоRegularExpression
поля делает обязательным. УдалениеRequired
аннотации не имеет никакого эффекта. Любые предложения о том, что нужно сделать, чтобы поля сRegularExpression
проверкой принимали пустые поля?источник
источник
Скрипты обычно загружаются в конце html-страницы, и MVC рекомендует использовать пакеты, просто говоря. Поэтому лучше всего, чтобы ваши
jquery.validate
файлы были каким-то образом изменены или не обновлены до последней версии, так как они проверяют входящие сообщения электронной почты.Таким образом, вы можете либо обновить / обновить свой пакет nuget, либо написать свою собственную функцию.
Вот пример, который вы бы добавили в дополнительный файл после
jquery.validate.unobtrusive
:Это просто копия и вставка текущего
jquery.validate
Regex, но таким образом вы можете установить свое собственное сообщение об ошибке / добавить дополнительные методы в поля, которые вы можете проверить в ближайшем будущем.источник
В соответствии с вышеизложенным это исправит проверку адреса электронной почты на стороне сервера:
Тем не мение...
Если вы используете проверку на стороне клиента JQuery, вы должны знать, что электронная почта проверяет по-разному на стороне сервера (проверка модели) и на стороне клиента (проверка JQuery). В этом примере test @ (адрес электронной почты домена верхнего уровня) произойдет сбой на стороне сервера, но на стороне клиента будет выполнена проверка.
Чтобы исправить это несоответствие, вы можете переопределить проверку электронной почты по умолчанию на стороне клиента следующим образом:
источник