使用 asp-validation-for 而不绑定到模型 属性

Use asp-validation-for without binding to model property

过去,当用户名或密码不正确时,我总是使用以下代码来使全局清晰,例如使用登录表单。我不希望此错误消息 link 发送到特定模型 属性,例如用户名或密码,而只是自定义 ValidationMessage。

控制器:

ModelState.AddModelError("Combination", "Password or username not correct.");

查看:

@Html.ValidationMessage("Combination")

在使用 VS17 生成的新示例中,它不使用 @Html.ValidationMessageFor()@Html.ValidationMessage() 了,但更容易
<span asp-validation-for="Username" class="text-danger"></span>

现在出现问题,我找不到像 asp-validation="Combination" 这样的东西来代替 @Html.ValidationMessage()

是否完全不同,我是否遗漏了什么,或者我是否需要使用旧的 @Html.ValidationMessage() 作为替代方案?

如果你想设置一个"global"验证错误,你可以简单地使用一个空字符串来指定错误不涉及特定的属性:

ModelState.AddModelError(string.Empty, "Password or username not correct.");

有了这个,您可以使用 asp-validation-summary 标签助手生成您的消息(或消息 - 您可以使用 string.Empty 多次调用 AddModelError):

<div asp-validation-summary="ModelOnly"></div>

通过指定 ModelOnly,将仅显示您使用 string.Empty 添加的验证消息。