我刚刚创建了一个ASP.NET MVC 4项目,并使用Visual Studio 2012 RC为索引
和创建
操作创建了一个控制器和Razor视图。
当我运行应用程序并浏览到create
视图时,显示以下错误:
编译器错误消息:CS0103:名称“Scripts”在当前上下文中不存在
问题是以下代码自动添加到视图底部:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
为什么脚本不存在?
我查看了Assembly System.Web.mvc.dll,V4.0.0.0中的基本Web Page类
我可以看到以下可用的帮助程序属性:
但没有命名脚本。
有什么想法吗?
编辑:
我的web.config文件如下所示(与Visual Studio创建的文件相同):
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
编辑#2:
人们正在写关于使用@scripts
帮助程序的博客:
虽然Visual Studio将@scripts
添加到生成的视图中,但我刚刚将Visual Studio 2012 RC安装到新的Windows 8安装中,仍然无法使用它!
解决办法如下。
我不确定如何关闭这个,因为最后一个更新似乎解决了这个问题。我仔细检查了一下,我使用了一个新的项目,执行了一个干净的安装。但同样的失败的项目,我曾经做过,现在工作良好,经过各种更新,没有明显的人工干预。感谢所有的想法,但当时肯定有问题;)
这里的关键是添加
<add namespace="System.Web.Optimization" />
添加到两个web.config文件。我的场景是,我在项目和主/根web.config中都有system.web.optimization引用,但@scripts仍然不能正常工作。您需要将命名空间引用添加到Views web.config文件以使其工作。
更新:
由于MVC4system.web.optimization的发布已经过时。如果您开始使用空白解决方案,则需要安装以下nuget软件包:
Install-Package Microsoft.AspNet.Web.Optimization
您仍然需要在web.config文件中引用system.web.optimization。有关详细信息,请参阅本主题:
如何为MVC-3-converted-to-4应用程序添加对System.Web.Optimization的引用
正如许多人所指出的,在完成上述步骤后,可能需要重新启动VS以使其工作。
@styles
和@scripts
是system.web.optimization
库提供的两个新帮助程序。顾名思义,它们分别捆绑和缩小了CSS和JavaScript文件或资源。
尝试通过@using
指令或通过web.config
包含命名空间system.web.optimization
http://ofps.oreilly.com/titles/9781449320317/ch_clientoptimization.html#bundlingandminification
更新
Microsoft已将绑定/缩放移动到一个名为Microsoft.aspnet.web.optimization
的单独包中。您可以从NuGet下载程序集。
这篇文章对你有用。