除了上面给出的答案,我想提一下,忘记了一个重要步骤:
在为Microsoft.AspNet.Web.Optimization 安装 NuGet 包并在 Global.asax 中注册捆绑包后(如Claies answer 中所述),您需要为样式和脚本添加渲染方法,如下所示:
<%= Styles.Render("~/bundles/css") %>
<%= Scripts.Render("~/bundles/MattsUIBundle/js") %>
这需要添加到 ASPX 页面的 head 部分,以便呈现之前添加到页面的包“~/bundles/js”和“~/bundles/css”。没有它就不会出现(参见why do I need render?)。它需要你添加
<%@ Import Namespace="System.Web.Optimization" %>
到页面的第 2 行以注册命名空间,假设您已经将 NUGET 包 Microsoft.AspNet.Web.Optimization 添加到代码中。
如果您想包含更多相关文件,请这样做
void Application_Start()
{
BundleCollection bundles=BundleTable.Bundles;
var jsMattsUIBundle = new ScriptBundle("~/bundles/MattsUIBundle/js");
jsMattsBundle.Include("~/Scripts/lib/jquery.min.js");
jsMattsBundle.Include("~/Scripts/lib/jquery-ui.custom.min.js");
jsMattsBundle.Include("~/Scripts/lib/jquery.watermark.min.js");
bundles.Add(jsMattsBundle);
}
或者更简单
jsMattsBundle.Include("~/Scripts/lib/jquery.min.js",
"~/Scripts/lib/jquery-ui.custom.min.js",
"~/Scripts/lib/jquery.watermark.min.js");
这会将虚拟路径 "~/bundles/MattsUIBundle/js" 下的所有 3 个脚本捆绑在一起。
重要提示:捆绑将检查您是处于调试模式还是发布模式。仅当您删除 web.config 中的调试标志
时,优化才适用
<compilation debug="true" />
或者,如果您在 Application_Start 内部明确定义,则无论处于调试模式,您都希望优化:
BundleTable.EnableOptimizations = true;
同样,如果您使用 CDN 支持,请通过
打开它
BundleTable.Bundles.UseCdn = true; //enable CDN support
这将允许您声明
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";
BundleTable.Bundles.Add(new ScriptBundle("~/bundles/jquery",
jqueryCdnPath).Include("~/Scripts/jquery-{version}.js"));
注意 CDN 将仅用于发布模式。以下脚本确保在 CDN 加载失败时加载 jQuery 的本地副本:
<%= Scripts.Render("~/bundles/jquery") %>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
var e = document.createElement('script');
e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
e.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(e);
}
</script>
假设您在 "~/Scripts" 提供 jQuery 1.7.1 的本地副本。
注意:在 MVC Razor 中,语法渲染在视图中完成如下:
@Scripts.Render("~/bundles/MattsUIBundle/js")
@Styles.Render("~/bundles/css")
更多信息可以找到here.