我有这样的模特..
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的值。如何从全局资源文件中检索值。
答案 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)
将访问修饰符更改为public
到Resources.Designer.cs
文件中的资源文件类。默认值为internal
public class Resources{
}
同时确保您在Username
public static string Username{
get{
return ResourceManager.GetString("Username", resourceCulture);
}
}