从控制器访问资源文件时出现MVC 4错误

时间:2014-02-11 07:33:15

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

从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的Designer包含正确的命名空间

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

1 个答案:

答案 0 :(得分:0)

在我的项目中,我使用单独的项目来获取资源。我已将所有资源文件构建操作属性设置为嵌入式资源。 在对资源项目的引用中,我将资源项目的复制本地设置为True。 (右键单击参考并选择属性

如果您的Web项目中包含资源文件,我认为与复制本地对应的属性应为复制到输出目录(也可通过右键单击和< EM>属性的)。

修改 我在您的评论中看到您说您以 Resource.Resource_EN_US.WaterMarkEmail 的形式访问该文件,但这不是访问文件的正确方法。您应该将它们作为单个文件访问:资源。属性。 我的文件命名为: Standard.resx Standard.en.resx Standard.no.resx 等等。要访问它们,我可以使用标准。属性 。资源文件将会变形,但前提是你给它们有效的名字。如果您可以单独访问所有资源文件,那么您没有使用正确的命名约定。

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