Fan*_*rns 200 asp.net-mvc razor
我刚刚创建了一个ASP.NET MVC 4项目,并使用Visual Studio 2012 RC创建了一个Controller和Razor Views for Index和CreateActions.
当我来运行应用程序并浏览到Create视图时,显示以下错误:
编译器错误消息:CS0103:当前上下文中不存在名称"脚本"
问题是以下代码自动添加到视图的底部:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Run Code Online (Sandbox Code Playgroud)
为什么Scripts不存在?
我查看了Assembly System.Web.Mvc.dll,v4.0.0.0中的基本Web页面类
我可以看到以下帮助器属性:
但没有任何一个名为Scripts.
有任何想法吗?
编辑:
我的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>
Run Code Online (Sandbox Code Playgroud)
编辑#2:
人们正在写关于使用@Scripts帮助者的博客:
然而,刚刚将Visual Studio 2012 RC安装到新的Windows 8安装上,@Scripts即使Visual Studio将其添加到生成的View中,我仍然无法使用!
解决方案如下.
我不知道如何关闭它,因为最终更新似乎解决了这个问题.我仔细检查了我使用新项目执行了干净安装.但是,我所做的同样失败的项目现在可以在各种更新后进行,并且没有人工明显的干预.感谢所有的想法,但当时肯定存在问题;)
Mar*_*rko 266
这里的关键是添加
<add namespace="System.Web.Optimization" />
Run Code Online (Sandbox Code Playgroud)
两个web.config文件.我的方案是我在项目和主/根web.config中都有System.Web.Optimization引用,但@Scripts仍然无法正常工作.您需要将名称空间引用添加到Views web.config文件以使其工作.
更新:
自MVC 4发布以来,System.Web.Optimization现已过时.如果您从一个空白解决方案开始,则需要安装以下nuget包:
Install-Package Microsoft.AspNet.Web.Optimization
Run Code Online (Sandbox Code Playgroud)
您仍然需要在web.config文件中引用System.Web.Optimization.有关更多信息,请参阅此主题:
如何为MVC-3-converted-to-4 app添加对System.Web.Optimization的引用
正如许多人所指出的,在完成上述步骤后,可能需要重新启动VS.
VJA*_*JAI 48
@Styles并且@Scripts是System.Web.Optimization图书馆提供的2个新助手.顾名思义,它们分别捆绑和缩小CSS和JavaScript文件或资源.
尝试System.Web.Optimization通过@using指令或通过包含命名空间web.config
http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification
UPDATE
Microsoft已将捆绑/缩小功能转移到一个名为的单独包中Microsoft.AspNet.Web.Optimization.您可以从nuget下载程序集.
这篇文章对你有用.
小智 48
上面有一个小步骤,我在另一篇文章中找到了.添加后
<add namespace="System.Web.Optimization" />
Run Code Online (Sandbox Code Playgroud)
到您的~/Views/web.config命名空间,关闭并重新打开Visual Studio. 这是我必须做的才能让这个工作.
小智 30
我正在使用区域,刚刚遇到这个问题,我只是将名称空间从根web.config复制到web区域.配置它现在有效!!
<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" />
Run Code Online (Sandbox Code Playgroud)
WWC*_*WWC 11
我遇到过同样的问题:
我使用的System.Web.Optimization版本已过时用于MVC4 RC.
我使用VS 2010中的包管理器更新了我的包.
在这篇MSDN博客中,Andy先生谈到了如何将MVC 4 Beta项目更新为MVC 4 RC.更新我的软件包得到了脚本(特别是Web优化版)以便我解决:
要安装最新的System.Web.Optimization包,请使用包管理器控制台(工具 - >库包管理器 - >包管理器控制台)并运行以下命令:
Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
Run Code Online (Sandbox Code Playgroud)
使用引用中包中包含的System.Web.Optimization文件.
要更新其他软件包:工具菜单 - >库软件包管理器 - >管理解决方案的NuGet软件包.
创建一个新的MVC 4 RC互联网应用程序并运行它.导航到使用相同代码的Login
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Run Code Online (Sandbox Code Playgroud)
允许Login.cshtml工作的是Views\Web.config文件(不是应用程序根版本)包含的内容
<namespaces>
<add namespace="System.Web.Optimization"/>
</namespaces>
Run Code Online (Sandbox Code Playgroud)
为什么您的Create视图无法正常工作且Login是?
小智 5
在剃刀视图上导入System.Web.Optimization,如下所示:
@using System.Web.Optimization
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
175839 次 |
| 最近记录: |