我在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"));
有没有办法完成这个?
答案 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"));
}