Asp.net-Mvc
asp.net mvc驗證必須是數字自定義錯誤
我是 asp.net 的新手,我有一個問題。當使用者在編輯器中為十進製欄位插入數字以外的內容時,他們會收到錯誤“欄位名稱”不是數字。但我不希望他們收到這條消息,我希望他們收到另一條消息。對於 required 和 range 驗證器,我對此沒有任何問題。我有什麼辦法可以做到這一點嗎?
我並不是說僅僅顯示另一條資訊就必須改變文化。
謝謝。
這是實際的答案:
創建一個類
CustomClientDataTypeModelValidatorProvider。從 MVC 源複製程式碼。更改方法MakeErrorString以輸出適當的消息,如下所示:private static string MakeErrorString(string displayName) { return string.Format( CultureInfo.CurrentCulture, Core.Resources.Errors.EroareNuENr, displayName); }我找不到不複製程式碼的方法,只是擴展它,因為它使用這種靜態方法。如果有人知道這一點,請告訴我。
然後,在 global.asax 中,我寫道:
var cdProvider = ModelValidatorProviders.Providers.SingleOrDefault(p => p.GetType().Equals(typeof(ClientDataTypeModelValidatorProvider))); if(cdProvider != null) { ModelValidatorProviders.Providers.Remove(cdProvider); ModelValidatorProviders.Providers.Add( new CustomClientDataTypeModelValidatorProvider()); }這樣流實際上會被路由到我的班級,而不是 asp.net MVC dll 中的班級
我從這裡得到了這個想法:
希望我理解你,改變
RangeValidatorErrorMessage只是初始化ErrorMessage參數:[Range(0, 100, ErrorMessage = "Some another error message insert here!")] [RegularExpression("\d", ErrorMessage = "!!!")] public decimal DecimalField { get; set; }