2012-08-28 50 views
0

我真的失去了嘗試爲我的MVC3應用程序創建自定義通用驗證消息。MVC3錯誤消息全球化

我看了很多教程和他們最大的部分建議的其中一個選項:

  1. 創建App_GlobalResources文件夾,裏面是把我的自定義資源,他們更改Global.asax中,通過字符串名稱我的資源爲DefaultModelBinder.ResourceClassKey屬性。將資源的構建操作更改爲「嵌入式資源」。

  2. 右鍵單擊項目,然後轉到屬性,單擊「資源」選項卡並創建您的自定義資源。將其訪問修飾符設置爲「公開」。

第一一個沒有工作對我來說,我已經在我的資源下面的鍵: DefaultModelBinder_ValueRequired,InvalidPropertyValue,PropertyValueInvalid,PropertyValueRequired 和使用沒有人時,我我試着在我的模型的必需屬性中提交併填寫空值。 我已經把這個代碼在Global.asax的Application_Start方法中:

DefaultModelBinder.ResourceClassKey = "My_Resource_Name"; 

隨着第二方法,我已經創建了相同的密鑰作爲第一個的資源。當一個屬性無效或爲空時,它們中沒有一個被默認使用(我也更改了global.asax中的ResourceClassKey,但沒有成功)。但是,當我加了一些參數,數據標註在我的模型:

[Required(ErrorMessageResourceType = typeof(MyResourceFile), ErrorMessageResourceName = "MyCustomKey")] 

當該數據註解的屬性是空的,我的消息「MyCustomKey」用於定義!

但我真的不希望手動將其設置爲所有屬性,我想要替換默認錯誤消息,如:「需要{0}」字段。「

回答

0

該消息是DataAnnotations的一部分。默認消息編譯到資源文件中的System.ComponentModel.DataAnnotations.Resources.DataAnnotationsResources.resources下,並且是RequiredAttribute_ValidationError=The {0} field is required。您可以嘗試下載源代碼,更改該部分並重建它。

似乎並沒有一種簡單的改變它的全局方式。你可以嘗試this,否則看起來你堅持把你的屬性添加到每個字段。或者使用像這樣的東西:

public class SomeModel 
{ 
    [Required(ErrorMessage = "The article is required")] 
    public string Article { get; set; } 

    [StringLength(512, ErrorMessage = "Must be less than 512 characters.")] 
    public string URL { get; set; } 
}