相关疑难解决方法(0)

是否可以在MVC3(C#)中使用`[Display(Name ="Something")]`数据注释的变量

不知道为什么,但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是一个动态生成的字符串.

c# resx data-annotations asp.net-mvc-3

4
推荐指数
1
解决办法
4696
查看次数

标签 统计

asp.net-mvc-3 ×1

c# ×1

data-annotations ×1

resx ×1