不知道为什么,但 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; }
}
然后我收到一个编译器错误,告诉我注释需要常量值,为什么???
有谁知道一种方法来完成我想做的事情?谢谢
UPDATE
好吧,看来最好的方法是.resx
根据下面的几个答案和其他帖子中的资源文件。这在大多数情况下都非常有效。
有谁知道我如何请求具有变量名称的资源?这次不是在数据属性的上下文中,而是在控制器和视图中。
基本上目前我正在获取资源@Resources.SomeKey
但我希望能够在函数中使用它@Resources["SomeOtherKey"]
where SomeOtherKey
是动态生成的字符串。