2017-12-04 13 views
2

私はASP.Net MVCでこのWebサイトを構築していますが、基本的にはデフォルトの外観になります。 ポータルに入る機関によって、色、バナー、挨拶が変わります。ASP.NET MVCで複数のCSSファイルがバンドルされています

例: www.portal.com/Institution1

色:ブルー

バナー:写真1

www.portal.com/Institution2

色:グリーン

バナー:写真2

私は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")); 

がTHERですこれを達成する方法は?

+0

はい、ユーザーが関連するページにアクセスしない限り、そのバンドルはページに含めないでください。上記のコードはバンドルを使用可能と宣言しているだけで、実際にバンドルを使用することはありません。これは、レイアウトおよび/またはビューのページで行われます。間違ったコードに集中しています。 – ADyson

答えて

1

具体的な方法はありません。私は数年前に同様のことをしました。一連のテーマを定義し、ユーザーまたは組織を既知のテーマに関連付けることができます。バンドル名は識別子のように使用できます。管理しやすい方法でコンテンツをレイアウトすると、ユーザーや組織に、コンテンツをプルする場所のスタイルやテーマを関連付けることができます。

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

私のような何かをするだろう:ユーザーが一般的に認証された後、あなたのようなものを使用して必要なスタイルにアクセスすることができたときにメインページがロードされるように、あなたは、IndexModelにプロパティを設定する、または任意の可能性

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")); 
} 
関連する問題