MVC 中的当前上下文中不存在名称“脚本”

Posted

技术标签:

【中文标题】MVC 中的当前上下文中不存在名称“脚本”【英文标题】:The name 'Scripts' does not exists in the current context in MVC 【发布时间】:2014-06-25 10:00:39 【问题描述】:

在我的 mvc 应用程序中,_Layout.cshtml 中有以下代码...

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>

但问题是它说The name 'Scripts' does not exists in the current context

我已经将程序集作为using System.Web.Optimization;添加到引用和捆绑配置中

@styles 也会发生这种情况.. 我该怎么办?

【问题讨论】:

【参考方案1】:

确保您的 ~/Views/Web.Config 添加了 System.Web.Optimization 命名空间:

<system.web.webPages.razor>
    <pages>
      <namespaces>
        <add namespace="System.Web.Optimization"/>
      </namespaces>
    </pages>
</system.web.webPages.razor>

【讨论】:

您的解决方案有效,错误消失但仍无法在 .cshtml 页面中获取智能,知道原因吗? 这与System.Web.Optimization无关。但见***.com/questions/22832435/… 不,之前它抛出了错误The name 'Scripts' does not exists in the current context,在视图的 web.config 中添加了System.Web.Optimization 之后,它已经消失了,但是智能感知仍然是一样的,好的,谢谢让我检查这个问题。 在配置文件中添加 web.optimization 后的智能问题。关闭 Visual Studio 中所有打开的选项卡。清理项目并构建项目。打开 .cshtml 文件并检查智能是否工作,如果没有,则再次重建它。现在它应该可以工作了。 这对我有用,但只有在我从 NuGet 安装 Microsoft.Aspnet.Web.Optimization 后 - 可能是因为我将我的项目从 4.6.0 升级到 4.6.2,但值得检查其他人问题【参考方案2】:

.chtml中的以下内容解决了问题

@using System.Web.Optimization
@Scripts.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")

【讨论】:

成功了!!但是为什么在 Views/web.config 中添加命名空间时它不起作用 @AsadShakeel 遇到了同样的问题并让我的工作方式相同。我发现如果您随后再次删除 @using System.Web.Optimization 并关闭 _Layouts.cshtml 文件并重建解决方案,然后重新打开该文件,智能感知又被破坏了。将线路放回去,没有重建,立即恢复它。这是在一个最初没有 BundleConfig 类(并且没有在 Global.ascx.cs 中注册)的项目中,并且 System.Web.Optimization 最初不在我的 web.config 中。手动添加所有内容。在从一开始就有 BundleConfig.cs 的项目中,从来没有出现过这个问题。 @hechchatt : 你是reposne【参考方案3】:

请按照我的步骤将清除此

第一

安装Microsoft.AspNet.Web.Optimisation 检查App_Start 文件夹是否包含BundleConfig.cs 文件。 添加<namespaces> <add namespace="System.Web.Optimization"/> </namespaces>Views/web.config文件中 在Global.asax.cs 中添加BundleConfig.RegisterBundles(BundleTable.Bundles); 重建并运行它

【讨论】:

【参考方案4】:

仍然存在智能感知问题,您可以将此代码添加到 global.asax 文件中的 Application_Start() 方法中。

BundleConfig.RegisterBundles(BundleTable.Bundles);

【讨论】:

这可能是问题的一部分,但更准确地说是确保注册了 System.Web.Optimization 命名空间(引用程序集、web.config、using 语句...)。【参考方案5】:

在 VisualStudio 2019 中,我能够解决这个错误。 Microsoft.Web.Optimization 现在包含在“Microsoft.AspNet.Web.Optimization”包中。 使用 NuGet 打包管理器下载包。 在 .cshtml 文件中添加“@using System.Web.Optimization;

【讨论】:

【参考方案6】:

解决此问题的最简单方法是从 Nuget 包管理器下载 (Microsoft.AspNet.Web.Optimization)。

步骤:

    右键单击解决方案。 选择“管理解决方案的 Nuget 包” 搜索 (Microsoft.AspNet.Web.Optimization) 并下载--> 应用 它在项目上。 关闭 Visual Studio 中所有打开的页面,然后重新打开,

【讨论】:

【参考方案7】:

你可能需要添加 nuget 包

Microsoft.AspNet.Web.Optimization

到你的项目。

【讨论】:

以上是关于MVC 中的当前上下文中不存在名称“脚本”的主要内容,如果未能解决你的问题,请参考以下文章

当前上下文中不存在名称“ViewBag”

当前上下文中不存在ViewBag

当前上下文中不存在名称“HttpContext”

C# 当前上下文中不存在的名称

当前上下文中不存在名称“txtStudentDOB”

arcengine显示当前上下文中不存在名称怎么办