C# .resx文件中的资源对MVC代码不可见

C# .resx文件中的资源对MVC代码不可见,c#,asp.net-mvc,resx,C#,Asp.net Mvc,Resx,我有两个项目的解决方案。其中一个称为Resources,是用于本地化的resource.resx文件的集合。另一个是一个MVC5项目,它有参考资料。我在.resx文件中定义了一个名为EmailAddress的新资源,并且确信它位于resource.Designer,cs: internal static string EmailAddress { get { return ResourceManager.GetString("EmailA

我有两个项目的解决方案。其中一个称为Resources,是用于本地化的resource.resx文件的集合。另一个是一个MVC5项目,它有参考资料。我在.resx文件中定义了一个名为EmailAddress的新资源,并且确信它位于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. 

发生了什么事?我还应该指出,资源文件最初取自一个示例项目,其中的资源显示出来,但我添加的任何资源都没有显示出来(但它是designer cs文件)。

我遇到了一个非常类似的问题,在我的例子中,通过对这些资源文件执行两项操作解决了这个问题:

  • 将自定义工具设置为PublicResXFileCodeGenerator
  • 将构建操作设置为“嵌入式资源”
  • 另外,在web.config中将视图的引用添加到namespaces部分的资源中

在那之后,它被解决了,所以我可以将它命名为“
@Resources.Resources.EmailAddress”

确保您的项目引用了您的资源项目。此外,在您的视图中,您还需要添加@using语句,后跟您的ProjectNamespace。我有这两个语句,但它仍然找不到我添加的任何语句。“原版”就在那里。我在以上面所示的方式运行模型时遇到此错误“无法检索属性‘名称’,因为本地化失败。键入‘Resources.Resources’不是公共的或不包含名为‘EmailAddress’的公共静态字符串属性”。生成操作是什么(在选择.resx文件时,在文件属性下)您的资源与原始示例中的文件的比例?此外,在编辑.resx文件时,访问修饰符是否设置为公共或内部?它们都设置为内部。我不知道如何改变这一点。那些也都是内部的。