DataAnnotations для действительного адреса электронной почты - PullRequest
0 голосов
/ 17 декабря 2018

Я использую аннотации данных для своей формы, где пользователи могут зарегистрировать свой аккаунт.Для поля электронной почты у меня есть одна аннотация данных для обязательной и одна для действительного электронного письма.Здесь вы можете видеть, что в моей viewmodel:

    [Required(ErrorMessage = "The Email field is required.")]
    [EmailAddress(ErrorMessage = "The Email field is not a valid e-mail address.")]
    public string Email { get; set; }

На мой взгляд, у меня есть следующий код:

<form asp-controller="Home" asp-action="RegisterAsync" method="post" class="register-form">
    <br />
    <img src="~/images/logo.png" width="300" />
    <br />
    <br />

    <div class="text-danger">
        @ViewBag.FailedToRegister
    </div>

    <div class="form-group">
        <input asp-for="Name" placeholder=@Localizer["Name"] class="form-control" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <input asp-for="Email" placeholder="Email" class="form-control" />
        <span asp-validation-for="Email" class="text-danger"></span>
    </div>
// Removed code for brevity

Теперь, когда я запускаю свое приложение и оставляю поле электронной почты пустым, я получаюхорошее сообщение об ошибке, как показано ниже.

Correct email error message

Но когда я заполняю что-то, что не является действительным адресом электронной почты, я не получаю ту же ошибкутекст как выше, но я получаю следующее.

Wrong email error message

(Извините за голландское сообщение, это означает: требуется действительный адрес электронной почты.)

Но почему я не получаю сообщение, которое я запрограммировал в моей ViewModel и как я могу это исправить?

Я также пытался изменить

[EmailAddress(ErrorMessage = "The Email field is not a valid e-mail address.")]

в моей модели представления на

[DataType(DataType.EmailAddress, ErrorMessage = "The Email field is not a valid e-mail address.")]

, но без везения.

1 Ответ

0 голосов
/ 17 декабря 2018

Неожиданная проверка, которую вы видите, поступает из вашего браузера.Если вы добавите атрибут «novalidate» в вашу форму, он отключит его:

например

<form asp-controller="Home" asp-action="RegisterAsync" method="post" class="register-form" novalidate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...