过去,当用户名或密码不正确时,我总是使用以下代码来使全局内容清晰,例如使用登录表单。我不希望此错误消息链接到特定的模型属性,例如用户名或密码,而仅链接到自定义的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()
作为替代?
答案 0 :(得分:0)
如果您要设置“全局”验证错误,则可以简单地使用一个空字符串来指定该错误与特定属性无关:
ModelState.AddModelError(string.Empty, "Password or username not correct.");
使用此功能后,您可以使用asp-validation-summary
标记助手来生成消息(或消息-您可以使用AddModelError
多次调用string.Empty
):
<div asp-validation-summary="ModelOnly"></div>
通过指定ModelOnly
,将仅显示使用string.Empty
添加的那些验证消息。