有效电子邮件地址的DataAnnotations

时间:2018-12-17 12:44:38

标签: 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; }

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

<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 :(得分:1)

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

例如

<form asp-controller="Home" asp-action="RegisterAsync" method="post" class="register-form" novalidate>