我正在为表单使用数据注释,用户可以在其中注册其帐户。对于电子邮件字段,我有一个用于必填数据注释,一个用于有效电子邮件。在这里,您可以在我的视图模型中看到它:
[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.")]
,但是没有运气。
答案 0 :(得分:1)
您看到的意外验证来自浏览器。如果将“ novalidate”属性添加到表单,它将禁用它:
例如
<form asp-controller="Home" asp-action="RegisterAsync" method="post" class="register-form" novalidate>