MVC 4 @Scripts“不存在”

我刚刚创建了一个ASP.NET MVC 4项目,并使用Visual Studio 2012 RC创建了一个控制器和Razor视图IndexCreate操作。

当我开始运行应用程序并浏览到Create视图时,显示以下错误:

编译器错误消息:CS0103:当前上下文中不存在“脚本”名称

问题是以下代码被自动添加到View的底部:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

为什么脚本不存在?

我查看了Assembly System.Web.Mvc.dll,v4.0.0.0中的基本Web页类

我可以看到以下帮助程序属性可用:

  • 阿贾克斯
  • HTML
  • 网址
  • 但没有任何命名的脚本。

    有任何想法吗?

    编辑:

    我的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帮手的博客:

  • SCOTT HANSELMAN博客
  • Codebetter.com
  • 然而,刚刚将Visual Studio 2012 RC安装到全新的Windows 8安装中,即使Visual Studio将它添加到生成的View中,我仍然无法使用@Scripts

    解决方案如下。

    我不知道如何关闭这个,因为最终更新似乎解决了这个问题。 我再次检查我已经执行了一个干净的安装,使用一个新的项目。 但是,在我进行了各种更新之后,我所做的同样的失败项目已经很好地工作了,而且没有人工干预。 感谢所有的想法,但当时肯定有一个问题;)


    这里的关键是添加

     <add namespace="System.Web.Optimization" /> 
    

    同时存在web.config文件。 我的方案是我在项目和主/根web.config中都有System.Web.Optimization参考,但@Scripts仍然无法正常工作。 您需要将名称空间引用添加到Views web.config文件以使其工作。

    更新:

    由于MVC 4 System.Web.Optimization的发布现已过时。 如果您从一个空白的解决方案开始,则需要安装以下nuget包:

    Install-Package Microsoft.AspNet.Web.Optimization
    

    您仍然需要在web.config文件中引用System.Web.Optimization。 有关更多信息,请参阅此主题:

    如何添加对MVC-3-converted-to-4应用程序的System.Web.Optimization的引用

    正如许多人指出的那样,在完成上述步骤之后,可能需要重新启动VS。


    @Styles@ScriptsSystem.Web.Optimization库提供的2个新helper。 顾名思义,它们分别捆绑和缩小CSS和JavaScript文件或资源。

    尝试使用@using指令或通过web.config包含名称空间System.Web.Optimization

    http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification

    UPDATE

    微软已经将绑定/缩小版本移到一个名为Microsoft.AspNet.Web.Optimization的单独包中。 你可以从nuget下载程序集。

    这篇文章对你有用。


    上面有一小步失踪,这是我在另一篇文章中找到的。 添加后

    <add namespace="System.Web.Optimization" />
    

    到你的~/Views/web.config命名空间, 关闭并重新打开Visual Studio。 这是我必须做的,以实现这个工作。

    链接地址: http://www.djcxy.com/p/20381.html

    上一篇: MVC 4 @Scripts "does not exist"

    下一篇: How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?