asp.net-core - 使用 asp-validation-for 而不绑定到模型属性
问题描述
过去,当用户名或密码不正确时,我总是使用以下代码来全局清除某些内容,例如使用登录表单。我不希望此错误消息链接到特定模型属性(如用户名或密码),而只是一个自定义 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()
的作为替代?
解决方案
如果要设置“全局”验证错误,可以简单地使用空字符串来指定错误与特定属性无关:
ModelState.AddModelError(string.Empty, "Password or username not correct.");
有了这个,您可以使用asp-validation-summary
tag-helper 生成您的消息(或消息 - 您可以AddModelError
多次调用string.Empty
):
<div asp-validation-summary="ModelOnly"></div>
通过指定ModelOnly
,只会显示您添加使用的那些验证消息string.Empty
。