通过资源文件将本地化应用于DisplayAttribute

时间:2012-06-05 08:01:26

标签: c# asp.net-mvc variables static constants

我在Visual Studio中启动了一个默认的MVC4项目,

我的模型中的某个地方是这段代码

 public class LoginModel
 {
    [Required]
    [Display(Name ="Name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
  }

我想把它改成这样的东西,因为我想尝试本地化(在另一个类中工作,但不在这里)(strings = resx文件用于本地化)

public class LoginModel
 {
    [Required]
    [Display(Name =strings.UserName)]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = strings.Password)]
    public string Password { get; set; }

    [Display(Name = strings.RememberMe)]
    public bool RememberMe { get; set; }
  }

错误是它必须是一个常量表达式,但是当我这样做时,我会得到类似'属性索引缺乏访问者'的内容

我在这里想念的是什么?为什么我不能只为字符串赋值? 在Java中,这一切都变得容易多了。希望你能帮助我。

2 个答案:

答案 0 :(得分:13)

您应该使用资源。 在属性中,您只能设置不可变值。

试试这个。

[Display(Name = "Remember me?", ResourceType = typeof(YourResourcesType))]
public bool RememberMe { get; set; }

看看这个 ASP.NET MVC 3 localization with DisplayAttribute and custom resource provider

答案 1 :(得分:-7)

我认为你必须使用sessions和viewState,

使用会话访问http://msdn.microsoft.com/en-us/library/ms178581.aspx

并使用viewstate访问http://msdn.microsoft.com/en-us/library/ms972976.aspx