Asp.net-Mvc

asp.net mvc驗證必須是數字自定義錯誤

  • November 28, 2018

我是 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 中的班級

我從這裡得到了這個想法:

希望我理解你,改變RangeValidator ErrorMessage只是初始化ErrorMessage參數:

[Range(0, 100, ErrorMessage = "Some another error message insert here!")]
[RegularExpression("\d", ErrorMessage = "!!!")]
public decimal DecimalField { get; set; }

引用自:https://stackoverflow.com/questions/4521254