【发布时间】:2014-08-15 13:23:09
【问题描述】:
我有两个项目的解决方案。一个称为资源,是用于本地化的资源 .resx 文件的集合。另一个是以资源作为参考的 MVC 5 项目。我在名为 EmailAddress 的 .resx 文件中定义了一个新资源,果然它在 Resource.Designer,cs 中:
internal static string EmailAddress {
get {
return ResourceManager.GetString("EmailAddress", resourceCulture);
}
}
但是,当我尝试在我的模型类中引用它时,它说它不存在:
[Display(Name = "EmailAddress", ResourceType = typeof(Resources.Resources))]
[Required(ErrorMessageResourceType = typeof(Resources.Resources),
ErrorMessageResourceName = "EmailRequired")]
[RegularExpression(".+@.+\\..+", ErrorMessageResourceType = typeof(Resources.Resources),
ErrorMessageResourceName = "EmailInvalid")]
public string EmailAddress { get; set; }
另外,如果我尝试在 Razor 视图中执行此操作,它不会显示在 Intellisense 中:
@Resources.Resources.
发生了什么事?我还应该说明资源文件最初是从一个示例项目中获取的,并且其中的资源会显示,但我添加的任何资源都没有(但它是设计器 cs 文件)。
【问题讨论】:
-
确保您的项目引用了您的资源项目。同样在您看来,您需要添加@using 语句,后跟您的项目命名空间
-
我两者都有,但它仍然找不到我添加的任何内容。 “原始集”就在那里。我在以上面显示的方式运行模型时收到此错误“无法检索属性'名称',因为本地化失败。类型'Resources.Resources'不是公共的或不包含名称为'EmailAddress'的公共静态字符串属性。”
-
资源的构建操作(在您选择 .resx 文件时在文件属性下)与原始示例中的文件相比是什么?
-
另外,在编辑 .resx 文件时,访问修饰符是设置为公共还是内部?
-
它们都设置为内部。我不知道如何改变这一点。也可以在内部使用。
标签: c# asp.net-mvc resx