首页 > 解决方案 > 使用 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()的作为替代?

标签: asp.net-coreasp.net-core-2.0asp.net-validators

解决方案


如果要设置“全局”验证错误,可以简单地使用空字符串来指定错误与特定属性无关:

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

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

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

通过指定ModelOnly,只会显示您添加使用的那些验证消息string.Empty


推荐阅读