【问题标题】:MVC 4 error in accessing resource file from controller从控制器访问资源文件时出现 MVC 4 错误
【发布时间】:2014-02-11 07:33:15
【问题描述】:

从 MVC 控制器访问资源文件字符串时出错(带有视图的工作文件)

Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "TempNameSpace.App_GlobalResources.Resource_EN_US.resources" was correctly embedded or linked into assembly "TempNameSpace" at compile time, or that all the satellite assemblies required are loadable and fully signed.

我已经做了什么
1. 资源文件构建动作:从内容到嵌入式资源
结果:发布中不包含资源文件。
2. 新增资源文件名为 Resource.resx
结果:同样的错误

解决方案层次结构
1. 解决方案包含 4 个项目,其中两个带有资源文件(App_GlobalResources 文件夹下的 Resource.resx 和 Resource_EN_US)
2. Resource_EN_US 的设计器包含正确的命名空间

global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TempNameSpace.App_GlobalResources.Resource_EN_US", typeof(Resource_EN_US).Assembly);

【问题讨论】:

  • 您是否将所有资源文件中的Access Modifier更改为Public?
  • 是的,我可以在视图上使用@Resources.Resource_EN_US.WaterMarkEmail 访问资源文件字符串

标签: asp.net-mvc asp.net-mvc-4 resources embedded-resource


【解决方案1】:

在我的项目中,我使用单独的项目来获取资源。我已将所有资源文件的 Build Action 属性设置为 Embedded Resource。 在对资源项目的引用中,我将资源项目的 Copy Local 设置为 True。 (右键单击引用并选择属性

如果你的 web 项目中有你的资源文件,我认为与 Copy Local 对应的属性应该是 Copy to Output Directory (也可以通过右键单击和 属性)。

编辑: 我看到您在评论中说您以 Resource.Resource_EN_US.WaterMarkEmail 的身份访问文件,但这不是访问文件的正确方法。您应该将它们作为一个文件访问:Resources.Property。 我的文件命名为:Standard.resxStandard.en.resxStandard.no.resx等。要访问它们,我可以使用 Standard.Property。资源文件将融合在一起,但前提是您为它们提供有效名称。如果您可以单独访问所有资源文件,则说明您没有使用正确的命名约定。

我建议实现一个 ResourceHelper,它使用 ResourceManager 来访问您需要的属性。

【讨论】:

  • 对,Binke,我们没有使用正确的命名约定,因为之前已经以这种方式实现了,现在我不想改变太多,但是是的,这需要完成,我会工作很快就开始了。
猜你喜欢
  • 1970-01-01
  • 2019-06-28
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
相关资源
最近更新 更多