小编典典

MVC 4 @Scripts“不存在”

all

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

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

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

问题是以下代码自动添加到视图底部:

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

为什么脚本不存在?

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

我可以看到以下可用的辅助属性:

  • 阿贾克斯
  • 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帮助程序:

@Scripts然而,刚刚将 Visual Studio 2012 RC 安装到全新的 Windows 8 安装中,即使 Visual Studio
将其添加到生成的视图中,我仍然无法使用!

解决方案如下。

我不知道如何关闭它,因为最终更新似乎解决了这个问题。我仔细检查了我是否使用新项目执行了全新安装。但是在经过各种更新并且没有明显的手动干预之后,我所做的同样失败的项目现在可以正常工作了。感谢所有的想法,但当时肯定有问题;)


阅读 65

收藏
2022-07-02

共1个答案

小编典典

这里的关键是添加

 <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 才能完成这项工作。

2022-07-02