2012-03-06 152 views
2

有沒有方法可以更改FluentValidation中的默認錯誤消息?fluentvalidation更改int/long的默認錯誤消息

我們可以爲更復雜的類型設置驗證,但簡單的'您輸入的數據不是int'樣式,我們似乎無法得到。

這些內置錯誤是:'值x對y無效'或者沿着這些行有什麼 - 有沒有辦法來覆蓋這些?

回答

3

沒有簡單/乾淨的方式來實現這一目標。第一種可能性是覆蓋DefaultModelBinder.ResourceClassKey屬性在應用程序啓動和它指向一個自定義的資源文件:

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    DefaultModelBinder.ResourceClassKey = "Messages"; 
} 

然後定義鍵PropertyValueInvalidApp_GlobalResources/Messages.resx

另一種可能性是在Jeremy Skinner建議的視圖模型上使用backing field

原因是這個錯誤信息是在字段上發生任何驗證之前由默認的模型聯編程序生成的。在驗證字段之前,必須先爲其分配一個值。由於您在模型綁定過程中嘗試將不表示有效整數的字符串轉換爲整數,默認模型聯編程序會分配默認消息。

+0

如果有過「SO大獎的英雄!!!」 – iwayneo 2012-03-06 12:26:39

+0

@DarinDimitrov用這種方法我改變了默認信息。但是,我怎麼能把字段名稱在消息中? – 2012-04-05 14:42:25

+0

http://stackoverflow.com/questions/4767457/fluent-validations-error-validation-type-names-in-unobtrusive-client-validation – iwayneo 2012-05-30 12:39:25