我想为mvc应用程序添加皮肤支持,允许添加多个皮肤并让用户选择首选皮肤。
将从数据库中的cookie中接收皮肤目录
为了实现这一点,我想创建一个参数化的包,它将为皮肤指定的目录作为输入,并为指定的路径动态创建包
bundles.Add(new StyleBundle("~/Content/css")
.Include(
"~/Content/{skinDirectory}/reset.css",
"~/Content/{skinDirectory}/site.css",
"~/Content/{skinDirectory}/grids.css")
);
其中{0}是我从捆绑包发送的目录名称,我在我的_Layout页面中调用它,如下所示:
@Styles.Render("~/Content/css", skinDirectory)
这可能吗?
答案 0 :(得分:1)
这可能有点晚,但可能会帮助其他人。是的,这是可能的。
public static class DynamicBundles
{
public static IHtmlString RenderSkin(string skinDirectory)
{
BundleTable.Bundles.Add(new StyleBundle("~/Content/css/" + skinDirectory).Include(
"~/Content/" + skinDirectory + "/reset.css",
"~/Content/" + skinDirectory + "/site.css",
"~/Content/" + skinDirectory + "/grids.css"));
return Styles.Render("~/Content/css/" + skinDirectory);
}
}
然后在你的_Layout页面中使用
@DynamicBundles.RenderSkin(skinDirectory)