我的建议:
转到Global.asax
。确保方法Application_Start
包含以下行:
protected void Application_Start()
{
...
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
找到或创造BundleConfig
类,如下所示,preferrably文件夹App_Start
:
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
...
bundles.Add(new StyleBundle("~page1").Include(
"~/Styles/site.css",
"~/Styles/page1.css"));
bundles.Add(new StyleBundle("~page2").Include(
"~/Styles/site.css",
"~/Styles/page2.css"));
...
bundles.Add(new StyleBundle("~pageN").Include(
"~/Styles/site.css",
"~/Styles/pageN.css"));
}
}
现在使用相应的捆绑在每一个相应的页面:
<link rel="stylesheet" type="text/css" href="Styles/page1" />
或更好的代码:
@Styles.Render("~/Styles/page1")
(这是cshtml
,但aspx
语法肯定非常相似)。
请注意,每个页面必须有单独的包。您不应该即时修改同一个包。捆绑包有虚拟的Url。在你的例子中,它只是css
。这些由浏览器缓存,所以无论天气如何,您已经改变了捆绑的内容,浏览器可能会认为这是相同的,不会重新获取它。
如果你不想花费大约手动添加每一个网页上面的方法治疗。你可以自动化它。下面的代码可以给你一个想法如何:
public class MyStyleHelper
{
public static string RenderPageSpecificStyle(string pagePath)
{
var pageName = GetPageName(pagePath);
string bundleName = EnsureBundle(pageName);
return bundleName;
}
public static string GetPageName(string pagePath)
{
string pageFileName = pagePath.Substring(pagePath.LastIndexOf('/'));
string pageNameWithoutExtension = Path.GetFileNameWithoutExtension(pageFileName);
return pageNameWithoutExtension;
}
public static string EnsureBundle(string pageName)
{
var bundleName = "~/styles/" + pageName;
var bundle = BundleTable.Bundles.GetBundleFor(bundleName);
if (bundle == null)
{
bundle = new StyleBundle(bundleName).Include(
"~/styles/site.css",
"~/styles/" + pageName + ".css");
BundleTable.Bundles.Add(bundle);
}
return bundleName;
}
}
用法:
<link rel="stylesheet" type="text/css" href="<%: MyStyleHelper.RenderPageSpecificStyle(Page.AppRelativeVirtualPath) %>" />
如果你只装在主的site.css,然后页面的CSS文件,那么你为什么要捆绑? – 2012-07-20 13:31:44
@TimBJames,我*加载整个文件夹的内容。我想只加载母版页中的站点级CSS,然后根据需要捆绑其他CSS文件。 – 2012-07-20 13:34:05
第一次阅读此内容。这不是打破了捆绑的目的吗?毕竟,如果没有绑定,你会在第一次加载时加载site.css和page1.css,然后当进入第2页时,它只会加载page2.css,第3页的page3.css等等。假设页面特定的CSS文件通常比一般站点小很多,捆绑你会在每个页面中加载一个不同的大文件,如果没有捆绑,你会在每个页面中加载一个小文件,只有改进会成为你第一页加载1文件,而不是2(相同的总大小) – Rodolfo 2013-10-02 20:37:04