MVC5手工添加System.Web.Optimization

VS2012web手工添辑一个空的mvC5的项目,添加EF6的支持,在别的项目里复制了母版页_Layout.cshtml过来,发现Styles.Render未引用,这个引用使用的命名空间是System.Web.Optimization,直接在项目里添加是找不到的,如是在NuGet命令行添加Install-Package Microsoft.AspNet.Web.Optimization

PM> Install-Package Microsoft.AspNet.Web.Optimization
正在尝试解析依赖项“Microsoft.Web.Infrastructure (≥ 1.0.0)”。
正在尝试解析依赖项“WebGrease (≥ 1.5.2)”。
正在尝试解析依赖项“Antlr (≥ 3.4.1.9004)”。
正在尝试解析依赖项“Newtonsoft.Json (≥ 5.0.4)”。
正在安装“Antlr 3.4.1.9004”。
已成功安装“Antlr 3.4.1.9004”。
正在安装“Newtonsoft.Json 5.0.8”。
已成功安装“Newtonsoft.Json 5.0.8”。
正在安装“WebGrease 1.5.2”。
您正在从 [email protected] 下载 WebGrease,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/msn_webgrease_eula.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。
已成功安装“WebGrease 1.5.2”。
正在安装“Microsoft.AspNet.Web.Optimization 1.1.3”。
您正在从 Microsoft 下载 Microsoft.AspNet.Web.Optimization,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnetcomponent_rtw_enu.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。
已成功安装“Microsoft.AspNet.Web.Optimization 1.1.3”。

到已成功安装"Microsoft.AspNet.Web.Optimization 1.1.3"这时就已经安装成功了,会自动给你的项目添加相关dll

此时发现Styles.Render依然不可用,于是乎,我们给他增加命名空间View下面的webConfig添加

    <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="System.Web.Optimization"/>
      </namespaces>
    </pages>

再次,在App_start下手工添加BundleConfig文件来加载css和js文件

技术分享
using System.Web;
using System.Web.Optimization;

namespace FoodCountSystem
{
    public class BundleConfig
    {
        // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));

            // 使用要用于开发和学习的 Modernizr 的开发版本。然后,当你做好
            // 生产准备时,请使用 http://modernizr.com 上的生成工具来仅选择所需的测试。
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                        "~/Content/themes/base/jquery.ui.core.css",
                        "~/Content/themes/base/jquery.ui.resizable.css",
                        "~/Content/themes/base/jquery.ui.selectable.css",
                        "~/Content/themes/base/jquery.ui.accordion.css",
                        "~/Content/themes/base/jquery.ui.autocomplete.css",
                        "~/Content/themes/base/jquery.ui.button.css",
                        "~/Content/themes/base/jquery.ui.dialog.css",
                        "~/Content/themes/base/jquery.ui.slider.css",
                        "~/Content/themes/base/jquery.ui.tabs.css",
                        "~/Content/themes/base/jquery.ui.datepicker.css",
                        "~/Content/themes/base/jquery.ui.progressbar.css",
                        "~/Content/themes/base/jquery.ui.theme.css"));
        }
    }
}
View Code

然后在Global.asax中注册BundleConfig.RegisterBundles(BundleTable.Bundles);

到这里,mvc的母版页已正常可以使用了,并用可以使用BundleTable.Bundles来加载js和css文件,这个方法确实非常实用,且功能强大,能够压缩合并js和CSS,并且自己很容易扩展,方便快捷。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。