我正在.Net核心上查看Asp.Net Core。脚手架已经创建了一些模板。模型的默认验证是不够的,所以当对象发送到控制器时我添加了一些额外的验证
ViewData.ModelState.AddModelError(nameof(Invoice.InvoiceNr), "Invoice number should be unique.");
现在在浏览器中,我只在@Html.ValidationMessage("InvoiceNr")
添加到cshtml文件时看到该消息。只有asp-validation-for="InvoiceNr"
似乎没有出现任何属性错误。
我想出来之前花了一些时间。有人可以说明为什么会这样,对我来说似乎反直觉,必须添加2行来显示所有验证错误。
谢谢!
@Shyju
<div class="form-group">
<label asp-for="InvoiceNr" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="InvoiceNr" class="form-control"/>
<span asp-validation-for="InvoiceNr" class="text-danger" />
</div>
</div>
答案 0 :(得分:4)
它无法正常工作的原因是您没有正确使用v alidation-for
标记帮助程序。您应该使用显式关闭跨度而不是使用自闭合符号。
替换
<span asp-validation-for="InvoiceNr" class="text-danger" />
使用
<span asp-validation-for="InvoiceNr" class="text-danger"></span>
简而言之,您不需要同时使用标记帮助程序和html帮助程序来验证错误。正确使用标记帮助程序后,您将能够看到验证错误消息。