前几日新建了一个空的MVC项目,但在通过 Styles.Render 和 Scripts.Render 来引用样式表及脚本文件时,不仅发现这两个类型不存在,而且App_Start文件夹下,并没有BundleConfig.cs文件。
在经过一番百度以后终于解决了问题,特此记录,以备后用。
首先,需要通过NuGet下载并安装Microsoft.AspNet.Web.Optimization。
这里我通过菜单栏中的 工具->NuGet包管理器->管理解决方案的 NuGet 程序包 来进行下载:
这里选择第三项 Microsoft.AspNet.Web.Optimization.zh-Hans ,在安装时会自动下载它的依赖项Microsoft.AspNet.Web.Optimization。
安装成功后,在App_Start文件夹下,手动创建一个名为BundleConfig.cs的文件,并将如下代码粘贴进去即可:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;
namespace WebApplication1
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
}
}
}
接着打开Global.asax文件,并在Application_Start()中,添加如下代码:
BundleConfig.RegisterBundles(BundleTable.Bundles);
但此时,如果我们直接在View中使用 Styles.Render 和 Scripts.Render ,则会提示Styles或Scripts不存在。而如果使用System.Web.Optimization.Styles或System.Web.Optimization.Scripts这种全名称的方式,则可以正常访问:
这里,我们可以打开View下的web.config文件,找到system.web.webPages.razor节点,添加对System.Web.Optimization的引用即可:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.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" />
<add namespace="WebApplication1" />
<!--添加对 System.Web.Optimization 的引用-->
<add namespace="System.Web.Optimization" />
</namespaces>
</pages>
</system.web.webPages.razor>
重新编译后并打开文件,发现Styles和Scripts就可以直接使用了: