ASP.NET MVC中的多个CSS文件包

时间:2017-12-04 20:50:55

标签: c# asp.net asp.net-mvc asp.net-mvc-5

我在ASP.Net MVC中构建这个网站,基本上会有默认外观。 根据进入门户网站的机构,颜色,横幅和问候将会改变。

实施例: www.portal.com/Institution1

颜色:蓝色

Banner:Photo1

www.portal.com/Institution2

颜色:绿色

Banner:Photo2

我正在尝试在BundleConfig.cs文件中完成此操作,但我还没有找到解决方案。

如果有人使用www.portal.com进入门户网站,我将使用:

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

如果有人使用www.portal.com/Institution1进入门户网站,我想使用:

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

如果有人使用www.portal.com/Institution2进入门户网站,我想使用:

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

有没有办法完成这个?

1 个答案:

答案 0 :(得分:1)

没有一种具体方法可以做到这一点。几年前我做了类似的事情。您可以定义一组主题,并将用户或组织与已知主题相关联。捆绑名称可以像标识符一样使用。如果您以可管理的方式布置内容,则可以将用户或组织与样式或主题相关联,无论您从何处提取内容。在一般地对用户进行身份验证之后,您可以在IndexModel上设置属性,或者其他任何内容,这样当主页加载时,您可以使用以下内容访问所需的样式:

@Styles.Render(@Model.CurrentSyle.BundleName) 

我会做类似的事情:

public static void RegisterBundles(BundleCollection bundles)
{
    //perhaps something like.
    foreach (MyTheme theme in ThemeController.SelectAll())
       AddThemeStyleBundle(bundles, theme.BundleName, theme.ThemeName);
}

private static void AddThemeStyleBundle(BundleCollection bundles,string bundleName, string themeName)
    bundles.Add(new StyleImagePathBundle(bundlename).Include(
        "~/Content/bootstrap.css", 
        String.Format("~/Content/{0}/Institution.css",themeName), 
        "~/Content/site.css"));
}