2013-12-20 84 views
6

使用MVC 5我需要爲DataAnnotation屬性本地化ErrorMessage。 我收到以下錯誤如何本地化DataAnnotation中的ErrorMessage?

ERROR

的屬性參數必須是常量表達式,屬性參數類型的typeof運算表達式或數組創建表達式

在模型

[Compare("Password", ErrorMessage = Resources.Account_Register_ConfirmPasswordErrorMessage)] 
public string ConfirmPassword { get; set; } 

任何想法如何解決它?

回答

7

您需要使用ErrorMessageResourceNameErrorMessageResourceType屬性。

例如像這樣:

[Compare("Password", ErrorMessageResourceName = "ConfirmPasswordErrorMessage", ErrorMessageResourceType=typeof(<<type_of_your_resoruce_class>>)] 
public string ConfirmPassword { get; set; } 

這裏也是MSDN,在這裏你可以找到兩個屬性解釋的鏈接。

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.compareattribute(v=vs.110).aspx

希望這有助於!

問候, 烏羅什

+1

這可能工作,但根據這裏的ASP.NET CORE文檔:https://docs.asp.net/en/latest/fundamentals/localization.html#dataannotations-localization,我們應該能夠本地化這些DataAnnotation錯誤消息沒有指定資源名稱和類型。無論我嘗試什麼,但是,我不想讓這個工作。有人可以分享一些經驗嗎? – Vladislav

0

你並不需要什麼,就創建正確的地方資源文件。

例如資源>的ViewModels> LoginVm.en-US.resx

在LoginVm

: [必需(的ErrorMessage = 「სახელიარისაუცილებელი」)] <(它是格魯吉亞語)

和LoginVm .EN-US.resx只需添加

სახელიარისაუცილებელი>用戶名是必需的

,並全部完成。