MVC 4 @Scripts“不存在”(MVC 4 @Scripts “does not exist

2019-06-25 08:48发布

我刚刚创建了一个ASP.NET MVC 4项目和使用的Visual Studio 2012 RC创建一个控制器和剃刀意见的IndexCreate操作。

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

编译器错误信息:CS0103:名称“脚本”不在当前情况下存在

的问题是将其自动添加到视图的底部下面的代码:

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

为什么不存在脚本?

我看了看基本网页类在大会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帮手:

  • SCOTT Hanselman的博客
  • Codebetter.com

然而,刚刚安装了Visual Studio 2012 RC到全新的Windows 8安装我仍然无法使用@Scripts尽管Visual Studio中把它添加到生成查看!

解决方案介绍如下。

我不知道如何关闭这个,因为最终的更新似乎解决该问题。 我仔细检查了我进行了一个干净的安装,使用一个新的项目。 但我做了同样的失败项目的各种更新和无需人工干预明显后,现在工作得很好。 感谢所有的想法,但有一定的时间的问题;)

Answer 1:

这里的关键是增加

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

为BOTH web.config文件中。 我的情况是,我不得不在这两个项目System.Web.Optimization参考,主/根web.config但@Scripts仍然没有正常工作。 您需要将命名空间引用添加到浏览web.config文件,使其工作。

更新:

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

Install-Package Microsoft.AspNet.Web.Optimization

您仍然需要参考System.Web.Optimization在你的web.config文件。 欲了解更多信息,请参见本主题:

如何引用添加到System.Web.Optimization为MVC -3-转换至4的应用程序

正如许多人士指出,可以在上述步骤后需要VS的重启 ,使这项工作。



Answer 2:

@Styles@Scripts是提供了2级新的帮手System.Web.Optimization库。 正如其名,他们捆绑,并分别压缩CSS和JavaScript文件或资源。

尝试包括命名空间System.Web.Optimization无论是@using指令或通过web.config

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

UPDATE

微软移动的捆绑/缩小到所谓的一个单独的包Microsoft.AspNet.Web.Optimization 。 您可以从以下网址下载装配的NuGet 。

这个职位将是对你有用。



Answer 3:

有一个小步从以上,这是我在另一篇文章中不翼而飞。 加入后

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

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



Answer 4:

我使用的区域,与刚刚碰到这个问题,我只是从根web.config中的区域网络复制的命名空间。 配置和现在的作品!

    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />        
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />


Answer 5:

我有同样的问题,我用的WinMerge来帮我跟踪下来。 但正如我研究多了,我发现,里克拥有完美的博客文章吧。

摘要:

  • 添加<add namespace="System.Web.Optimization"/>这两个web.config文件中
  • 运行Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • 更新捆绑代码
  • 更新布局文件
  • 最后一步是更新其他10个图书馆。 我没有和它工作得很好。 所以,貌似可以拖延这个(除非我已经更新他们的1个或多个)。 :)


Answer 6:

我遇到过同样的问题:

我用的是System.Web.Optimization版本已经过时了MVC4 RC。

我使用包管理器在VS 2010中更新了我的包。

在这个MSDN博客 ,安迪先生谈到如何在MVC 4测试版项目更新到MVC 4 RC。 更新我的包拿到脚本(尤其是网站优化的一个)来解决对我来说:

要安装最新System.Web.Optimization包,使用程序包管理器控制台(工具 - >库包管理器 - >程序包管理器控制台),然后运行下面的命令:

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization

使用包含在包中的引用System.Web.Optimization文件。

要更新其他包:在工具菜单 - >库包管理器 - >管理的NuGet包解决方案。



Answer 7:

创建一个新的MVC 4 RC网络应用程序并运行它。 导航到登录使用相同的代码

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

是什么让Login.cshtml工作是视图\ Web.config文件(而不是应用程序根版)包含

<namespaces>

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

  </namespaces>

为什么不工作你创建视图和登录名是?



Answer 8:

您Razor视图的顶级进口System.Web.Optimization如下:

@using System.Web.Optimization


Answer 9:

我就遇到了这个问题,运行命令,而不过:

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization 

我收到了神秘的消息(爱是爱咖啡的第一杯之前,一个伟大的双关语):

安装-包:不支持在此平台上指定的加密算法。

我(没有选择的余地),在Windows XP SP3上运行这一点,我发现了,我只好跟着发布用户artsnob上的指示ASP.NET论坛

  • 请卸载的NuGet,并尝试重新安装。 如果你是无法做到这一点,以管理员身份登录。
  • 转到工具=>扩展管理器=>选择“NuGet包管理器” =>卸载
  • 重新安装,通过搜索“的NuGet” =>安装。
  • 如果它不工作,请尝试正如我在以前的文章中提到(这并不意味着,你必须使用以前的版本,如果它工作正常,我们可以报告这个错误,并得到安装,1.7.x版本最新的版本补丁)。

有一次,我跑了这个然后我可以运行命令行来更新Web.Optimization。

希望这可以节省一些人挖。



Answer 10:

写吧

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}


Answer 11:

我从Beta升级到RC,面对“脚本”不存在问题。 冲浪所有网站上,最终的解决方案是什么N40JPJ说,加上另外workaroudn:

复制在查看\ Web.config中的以下内容:

  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.Optimization"/>
    <add namespace="System.Web.Helpers"/>
  </namespaces>

和里面查看\ Shared_Layout.cshtml以下

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

希望能帮助到你。



Answer 12:

  1. :删除视图页面。
  2. :添加命名空间webconfig(针对目录)
  3. :创建视图的尝试!

祝好运...



Answer 13:

显然,你已经创建了不“脚本”文件夹中的“空”的项目类型。 我的建议-create全“脚本”文件夹中的“基本”项目类型。

对于所有的开发人员。



Answer 14:

只是删除/隐藏来自控制器的创建和编辑Razor视图的代码。

 @section Scripts {  

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


Answer 15:

其中多为锅 - 花了年龄试图找出同样的问题 - 即使这是在web.config根和视图的定义根。 原来我错误地把它添加到<system.web><pages><namespaces> ,而不是<system.web**.webPages.razor**><pages><namespaces>元素。

很容易错过!



Answer 16:

当我是富人此代码的网页上输入:

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

出现此错误: 错误。 处理您的请求时发生错误。

而这个例外记录在我的日志:

System.Web.HttpException (0x80004005): The controller for path '/bundles/jqueryval' was not found or does not implement IController.
   em System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
...

我曾尝试此页面上的所有技巧和他们没有解决我。 所以我看着我的包文件夹,发现我有两个版本System.Web.Optmization.dll:

  • Microsoft.AspNet.Web.Optimization.1.1.0(v1.1.30515.0 - 68,7KB)
  • Microsoft.Web.Optimization.1.0.0-β(V1.0.0.0 - 304KB)

我的项目被引用到旧beta版本。 我只是改变了参考较新的版本(69KB)和eveything的罚款。

我想这可能帮助别人。



Answer 17:

这有一个明显的解决方案。 后来我有同样的问题。 不相关的程序集引用或... .It'll发生在MVC局部视图层次通话,当你有复杂的页面结构。 因此调用/每个页面(可能是主页或部分)上分别呈现每个部分将导致无法看到像波纹管代码页的所需的部件:

@RenderSection("Scripts", required: false)

这只是强迫页面发现和呈现相关部门并在发生故障的情况下显示了像你这样的错误消息。

因此,我建议你从主追踪您的网页(例如程序跟踪)将其所有的谐音来检测依赖 。 也许这是一个可怕的工作,但没有提供其他选择这里。

这并不是说,根据我的经验,在编程一些有条件的情况下,会导致不告诉你正确的错误导致的问题。



Answer 18:

我有这个问题后,我添加了一个区域到没有任何一个项目。 要摆脱它只是复制web.config中withing根浏览文件夹复制到区域的Views文件夹,并开始工作。



Answer 19:

我在MvcMusicStore解决这个问题,通过加入_Layout.cshtml这部分代码

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

并从Edit.cshtml验证码

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

运行程序inshallah将与您合作。



Answer 20:

对我来说,这个问题解决了,在下面的NuGet包管理器控制台写:

update-package microsoft.aspnet.mvc -reinstall


Answer 21:

当我开始使用MVC4最近我遇到上述问题,同时还与空模板的项目。 步骤来解决这个问题。

  1. 转到TOOLS - > Library Package Manager - > Packager Manager Console粘贴下面的命令并按回车键Install-Package Microsoft.AspNet.Web.Optimization注:等待安装成功。
  2. 在根级别转到web.config文件,在页面的命名空间部分添加下面的命名空间。 添加<namespace="System.Web.Optimization" />
  3. 转到Web.config文件夹视图,并按照步骤2。
  4. 生成解决方案并运行。

在步骤1中提到将增加一些系统库到解决方案中引用类似System.Web.Optimization包未在MVC4空模板默认的参考。

我希望这有帮助。 谢谢



Answer 22:

从升级到MVC3一个MVC4项目时,我有一个非常类似的错误。

编译器错误消息:CS0103:名称[嗒嗒]不在当前上下文中存在

就我而言,我在我的几个Web.Configs的有过时的版本号。

  1. 我需要在我的项目每web.config中更新从“3.0.0.0”为“4.0.0.0”的System.Web.Mvc版本号。
  2. 我需要更新我的所有System.Web.WebPages,System.Web.Helpers和System.Web.Razor版本号从“1.0.0.0”在我的项目“2.0.0.0”在每一个Web.Config中。

例如:

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

...

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

一定要查看Web.Configs在每个浏览目录。

你可以阅读更多有关升级的ASP.NET MVC 3项目到ASP.NET MVC 4 。



Answer 23:

如果您添加到您的web.config,它仍然显示消息,则需要关闭项目并重新打开它,现在它仍将存在,并@ Styles.Render(“”),并@ Scripts.Render()将正常工作。



Answer 24:

试试这个:

@section Scripts 
{
    Scripts.Render("~/bundles/jqueryval")  // <- without ampersand at the begin
}


文章来源: MVC 4 @Scripts “does not exist”