asp.net mvc4:在bundle上添加动态参数

时间:2014-03-21 09:36:14

标签: asp.net-mvc-4 skin bundles

我想为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)

这可能吗?

1 个答案:

答案 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)