不知道为什么,但是 MVC3 中的数据注释坚持使用常量值,对于错误消息和显示名称之类的东西我无法理解。我喜欢这些注释,它们非常易于使用且功能强大,但是如果您需要支持多种语言怎么办?
想象一下我有以下模型:
public class Person
{
public string First_Name { get; set; }
}
如果我不更改任何内容并使用 MVC3 将为我构建的 CRUD 视图,我会在显示“First_Name”的文本字段旁边获得一个标签,因此我添加数据注释以更改显示名称,如下所示:
public class Person
{
[Display(Name="First name")]
public string First_Name { get; set; }
}
哪个工作得很好。但我想根据用户语言提供不同的显示名称,使用我之前创建的函数GetDisplayName(string ToGet, string Language)
,它只返回我感兴趣的字符串,但如果我将数据注释更改为:
public class Person
{
[Display(Name=GetDisplayName("First_Name", "English"))]
public string First_Name { get; set; }
}
然后我得到一个编译器错误,告诉我注释需要一个常量值,为什么????
有谁知道一种方法来完成我想要做的事情?谢谢
更新
好的,似乎最好的方法是.resx
根据下面的几个答案和其他帖子中的答案使用资源文件。在大多数情况下效果很好。
有谁知道我如何请求具有变量名的资源?这次不是在数据属性的上下文中,而只是在控制器和视图中。
基本上目前我正在获取资源,@Resources.SomeKey
但我希望能够在动态生成的字符串的函数中使用@Resources["SomeOtherKey"]
它SomeOtherKey
。