过去,当用户名或密码不正确时,我总是使用以下代码来全局清除某些内容,比如使用登录表单。我不希望这个错误消息链接到特定的模型属性,如用户名或密码,而只是一个自定义的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
标签助手来生成您的消息(或消息-您可以用string.Empty
多次调用AddModelError
(:
<div asp-validation-summary="ModelOnly"></div>
通过指定ModelOnly
,将只显示使用string.Empty
添加的验证消息。