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