簡體   English   中英

ValidationMessageFor的用法

[英]Usage of ValidationMessageFor

我如何檢查模型屬性是否存在驗證錯誤 - 我正在使用validationmessagefor方法來顯示錯誤消息。 我怎樣才能一次顯示一條錯誤消息? 一世

這里有模型屬性我有m.CommunicationView.MobilePhone.Area m.CommunicationView.MobilePhone.Number

 <div class="fl">
   @Html.TextBoxFor(m => m.CommunicationView.MobilePhone.Area, new { @id = "personalDetailMobilePhoneAreaInput",  @class="customText wdt80 numericValue",type = "text",maxlength="2" })
   @Html.TextBoxFor(m => m.CommunicationView.MobilePhone.Number, new { @id = "personalDetailMobilePhoneNumberInput",  @class="customText wdt120 mrglft10 phnIE numericValue",type = "text",maxlength="8" })
   @Html.ValidationMessageFor(m => m.CommunicationView.MobilePhone.Area)
   @Html.ValidationMessageFor(m => m.CommunicationView.MobilePhone.Number)
</div>

只需將ErrorMessage字段添加為模型中[Required]裝飾器的一部分即可。 例如,對於數字:

[Required(ErrorMessage = "Number is required")]
[StringLength(10, ErrorMessage = "Number can be no larger than 10 characters")]
public string Number { get; set; }

聽起來你在談論客戶端驗證。 每個字段都由它自己驗證,因此如果它有錯誤,您將收到一條錯誤消息。 沒有考慮其他字段是否也有錯誤消息。 來自jQuery Validation文檔:

默認情況下,表單在提交時驗證,由用戶單擊提交按鈕觸發,或在表單輸入聚焦時按Enter鍵(選項onsubmit)。 此外,一旦字段被突出顯示為無效,只要用戶在字段中鍵入內容(選項onkeyup),就會對其進行驗證。 當用戶在無效字段中輸入無效內容時,如果該字段失去焦點(選項onblur),也會對其進行驗證。 (強調我的)

因此,只要該字段未以某種方式激活,就不會出現任何錯誤消息,但如果它已被激活且有錯誤,則會顯示該消息。 同樣,這是逐場的。 但是,如果問題是它“弄亂了用戶界面”,你應該只修復你的用戶界面來容納消息。 良好的用戶界面可以告知用戶所有潛在的問題,因此他們不會在無休止的提交和嘗試再次循環中浪費時間。

此外,您將獲得與服務器端驗證相同的功能,因為當模型錯誤返回視圖時,將顯示所有字段的所有錯誤。 最好接受這個,讓你的UI更容易適應。

您需要包含正確的jquery庫,它們在文本框/控件失去焦點時自動顯示錯誤。 將它們放在您的布局頁面中。

    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>  

確保在主調用jquery庫之后調用它們。 還要確保在AppStart / BundleConfig.cs中設置了軟件包

  bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.validate*"));  

最后確保你的webconfig有這個(Root web.config,而不是views / web.config)將它放在appSettings節點中

<add key="UnobtrusiveJavaScriptEnabled" value="true" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM