数据注释用于有效的电子邮件地址验证

6

我正在使用数据注释为表单提供帮助,用户可以通过该表单注册他们的账户。对于电子邮件字段,我有一个必填项和一个有效电子邮件的数据注释。在这里你可以看到我的视图模型:

    [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

现在当我运行我的应用程序并将电子邮件字段留空时,我会得到下面这样一个很好的错误提示信息。

正确的电子邮件错误信息

但是当我填写的内容不是有效的电子邮件地址时,我没有获得像上面那样的错误文本,而是获得了以下内容。

错误的电子邮件错误信息

(对于荷兰语的消息表示歉意,它的含义是:需要一个有效的电子邮件地址。)
但为什么我没有得到我在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.")]

我一直试图学习IT技术,但总是没有成功。


你正在运行哪个版本的ASP.Net MVC? - Ashokan Sivapragasam
@AshokanSivapragasam .NET Core 2.1 - Svenmarim
请查看此示例:http://www.codingfusion.com/Post/Email-model-validation-with-DataAnnotations-and-DataType-In-ASP-NET-MVC - undefined
1个回答

2
你看到的意外验证来自于你的浏览器。如果在表单中添加“novalidate”属性,则会禁用它:
例如:
<form asp-controller="Home" asp-action="RegisterAsync" method="post" class="register-form" novalidate>

我仍然得到之前的相同结果。 - Svenmarim
novalidate属性不会禁用客户端验证吗? - Ashokan Sivapragasam
它应该只禁用浏览器验证,而不是MVC客户端验证。 - Rob C
最好同时具备jQuery和服务器端的工作,以确保安全。 - jazb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接