有效电子邮件地址的数据注释

Sve*_*rim 6 c# asp.net-core-mvc

我正在为我的表单使用数据注释,用户可以在其中注册他们的帐户。对于电子邮件字段,我有一个用于必需的数据注释和一个用于有效电子邮件的数据注释。在这里你可以在我的视图模型中看到:

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

在我看来,我有以下代码:

<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
Run Code Online (Sandbox Code Playgroud)

现在,当我运行我的应用程序并将电子邮件字段留空时,我会收到一条如下所示的不错的错误消息。

更正电子邮件错误消息

但是,当我填写的内容不是有效的电子邮件地址时,我不会收到与上面相同的错误文本,但会收到以下信息。

错误的电子邮件错误消息

(对不起,荷兰语消息,这意味着:需要一个有效的电子邮件地址。)

但是为什么我没有收到我在 ViewModel 中编程的消息,我该如何解决这个问题?

我也尝试改变

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

在我的视图模型中

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

,但没有运气。

Rob*_*b C 2

您看到的意外验证来自您的浏览器。如果您将“novalidate”属性添加到表单中,它将禁用它:

例如

<form asp-controller="Home" asp-action="RegisterAsync" method="post" class="register-form" novalidate>
Run Code Online (Sandbox Code Playgroud)