如何在DataAnnotation中本地化ErrorMessage?

Gib*_*boK 8 c# asp.net asp.net-mvc asp.net-mvc-5

使用MVC 5我需要为DataAnnotation属性本地化ErrorMessage.我收到以下错误

错误

属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

在模型中

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

知道怎么解决吗?

Uro*_*jat 10

您需要使用ErrorMessageResourceNameErrorMessageResourceType属性.

例如这样:

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

这里还有一个MSDN链接,您可以在其中找到这两个属性的说明.

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

希望这可以帮助!

此致,Uros

  • 这可能有效,但根据此处的 ASP.NET CORE 文档:https://docs.asp.net/en/latest/fundamentals/localization.html#dataannotations-localization,我们应该能够本地化这些 DataAnnotation 错误消息,而无需指定资源名称和类型。然而,无论我尝试什么,我都无法让它发挥作用。有人可以分享一些这方面的经验吗? (2认同)