2016-11-04 154 views
1

我在.Net核心上检出Asp.Net Core。脚手架已经创建了一些模板。该模型的默认验证是不够的,所以我增加了一些额外的验证,当物体在浏览器中我只看到消息时@Html.ValidationMessage("InvoiceNr")被添加到被发送到控制器现在为什么需要asp-validation-for和@ Html.ValidationMessage()?

ViewData.ModelState.AddModelError(nameof(Invoice.InvoiceNr), "Invoice number should be unique.");

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> 

@GSerg enter image description here

+1

你可以分享你在视图中尝试过'asp-validation-for'吗? – Shyju

+0

[标签助手 - 自闭HTML标签是一个坏习惯?]的可能的重复(http://stackoverflow.com/questions/39486703/tag-helpers-self-closing-html-tags-is-a-bad-habit ) – GSerg

回答

4

它不工作的原因是因为你没有正确使用V alidation-for标签帮手。您应该使用明确的跨度关闭来代替使用自闭符号。

更换

<span asp-validation-for="InvoiceNr" class="text-danger" /> 

随着

<span asp-validation-for="InvoiceNr" class="text-danger"></span> 

总之,你并不需要使用两个标记辅助和HTML辅助一起到验证错误。通过正确使用标签助手,您将能够看到验证错误消息。

+1

这就是它。这让我感到困惑。在我看来,脚手架似乎没有产生非常有用的模板。非常感谢您的快速帮助! –

+0

@MikedeKlerk如果这确实是脚手架产生的,那么它必须被报告为一个bug(请参阅http://stackoverflow.com/q/3558119/11683)。 – GSerg