获取Model属性的全局资源值

时间:2014-08-26 09:55:14

标签: c# asp.net-mvc

我有这样的模特..

public class LoginModel
    {
        [Required]
        [Display(Name = "Username", ResourceType = typeof(Resources.Resources))]
        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; }
    }

我在 App_GlobalResources 文件夹中有Resources.resx个文件。 但是,当我尝试从资源文件中访问Username值时,它会显示..

Cannot retrieve property 'Name' because localization failed.  Type 
'Resources.Resources' is not public or does not contain a public static 
string property with the name 'Username'

但我在那里有一个Username的值。如何从全局资源文件中检索值。

3 个答案:

答案 0 :(得分:4)

在VS中查看resx文件时,有一个“访问修饰符”选项(应显示在选项卡下)。默认设置为内部,您需要将其更改为Public。

答案 1 :(得分:0)

我有一个MVC soloution w Entity Framework。 没有设置任何多语言或任何语言,但是我有一个Properties.Resources.resx,因此我可以快速将UI关键字与客户的术语匹配。 (这是公开的,还有爵士乐)

我得到同样的错误;它与

有关
@Html.LabelFor(model => model.DocumentTypeId, ...

我有一个资源:'DocumentTypeID',而我的mvc模型中的一个类具有一个属性:'DocumentTypeId'。

解决方案是将资源“ DocumentTypeID”的名称更改为“ DocumentTypeId”。

显然,当您具有相同名称的资源和属性时,它们必须区分大小写。

答案 2 :(得分:-1)

将访问修饰符更改为publicResources.Designer.cs文件中的资源文件类。默认值为internal

public class Resources{

}

同时确保您在Username

的文件中有一个有效的条目
public static string Username{
 get{
   return ResourceManager.GetString("Username", resourceCulture);
  }
}