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 中的当前上下文中不存在名称“脚本”的主要内容,如果未能解决你的问题,请参考以下文章