2016-11-04 63 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