【发布时间】:2012-07-24 04:19:42
【问题描述】:
不知道为什么,但 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 是动态生成的字符串。
【问题讨论】:
标签: c# asp.net-mvc-3 data-annotations resx