【发布时间】:2013-08-06 01:33:24
【问题描述】:
我在这里束手无策。
在底部重现的步骤
我在 Visual Studio 2012 Update 3 中创建了一个 MVC 4 项目,例如 MyProj.Mvc。
我按照here 的建议将我的GlobalResources.resx 放在项目下的Resources 文件夹中,以便编译成DLL。我查看了GlobalResources.resx.cs 中生成的代码,一切都是公开的。我可以从其他.cs 文件(例如HomeController.cs)访问资源就好了。
我无法让MyProj.Mvc 命名空间在任何视图的当前上下文中。
例如,在任何 Razor 视图中,我都可以引用这样的资源:
@MyProj.Mvc.Resources.GlobalResources.AppName
但是,当我尝试执行以下操作时:
@Resources.GlobalResources.AppName
我得到一个错误。未找到 Resources 命名空间。
我按照here 的建议将命名空间放在我的 ~/Views/Web.config 中:
<add namespace="MyProj.Mvc" />
而且,视图仍然无法识别Resources 命名空间。重建和/或重新启动 Visual Studio 不起作用。
“好吧,”我想,“去死吧,我只是在页面顶部放一个@using声明,稍后再处理。”
@using MyProj.Mvc // put at the top of the page
而且,视图仍然无法识别 Resources 命名空间。
所以请帮忙。帮助!我可能做错了什么,在页面顶部放置 @using 语句仍然没有将命名空间纳入范围?
重现步骤:
我已经能够通过全新、干净的项目重现这一点。 Visual Studio 2012 Update 3,创建一个名为 MyProj.Mvc 的新 ASP.NET MVC 4 Web 应用程序。对于模板,我主要关注 Internet 应用程序,尽管我也在我的机器上使用 Empty 项目复制了它;选择 Internet 应用程序只是为了更好地匹配我所拥有的。在_Layout.cshtml 的顶部,放置@using MyProj.Mvc。在页面的其他地方,开始输入@Controllers.HomeController。请注意,自动完成功能甚至不会尝试提供 Controllers 命名空间,更不用说 HomeController。
现在变得奇怪了:
所以,失败了。不过,这里有一些东西。尝试将using 语句更改为@using MyProj.Mvc.Controllers。现在,返回并开始输入@HomeController。它有效!
那么,是什么让项目的命名空间如此特别,以至于它拒绝进入视图的范围???
【问题讨论】:
-
您是否尝试将资源移动到 App_GlobalResources 文件夹?然后使用@TestApp.App_GlobalResources.Resource1 访问它
-
我给出的第一个链接建议不要使用 App_GlobalResources 文件夹,因为它会导致单元测试出现问题。
标签: c# asp.net-mvc-4 razor visual-studio-2012