2017-10-23 13 views
0

私はAdmin Panelに1つのテーマを使いたい、1つのテーマは訪問者に見せたいテーマです。私は、訪問者とウェブサイトの管理者のために別々のテーマがあるべきだと言います。 asp.net mvcでの操作方法は? mvcでは_Layout.cshtmlというファイルが1つしかないので、ここではテーマを1つだけ付けなければなりません。asp.net mvcで2つのテーマを使用

答えて

3

管理レイアウトを指定することができます)(@RenderBodyを呼び出すなど_AdminLayoutのような別の名前で共有フォルダ内の第2のレイアウトを定義します。その中の機能、 今あなたが

1.ビューでレイアウトを定義し、さまざまな方法を経由してレイアウトをレンダリングすることができます

@{ 
     ViewBag.Title = "View_Title"; 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 

2. ActionResultのレンダリングレイアウトページ(コントローラを使用)。ビューの拡張メソッド):

public ActionResult Action_Result_Name() 
    { 
     return View("Action_Result_Name","_AdminLayout"); 
    } 

3. _ViewStart.cshtmlページを使用した:MVCアプリケーションのデフォルトのレイアウト・ページを定義するために使用
_ViewStart.cshtmlページ。

@{ 
    layout = "~/Views/Shared/_AdminLayout.cshtml"; 
} 

あなたはアイデンティティフレームワークを使用しているなら、あなたは

@{ 
    if (User.IsInRole("Admin")) 
    { 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
    else 
    { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
} 
+0

をクリアしていません。 –

+0

あなたの歓迎... –

4

必要な数のレイアウトファイルを作成できます。あなたのケースでは、それはあなたの管理テーマのCSSファイルを使用することができる独自のレイアウトページを持っている管理領域を作成することをお勧めします

Areasは、スタイル、コードなど).Areasは、大きなWebアプリケーションを小さな機能グループに分割する方法を提供します。

通常の訪問者の場合、ページ/ビューはデフォルトのレイアウトを使用し、管理者ユーザーは自分のレイアウトを持つ管理領域からレンダリングされたビューを取得します。管理エリア(あるいは_Viewstart.cshtml)からの眺めのために

は、明示的に

@{ 
    Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
} 
+0


同様の条件に基づいて、それはよくないですんが弟をレイアウトを定義することはできません。 2つのテーマがリンクしている2つの_Layout.cshtmlファイルが必要です。 訪問者のテーマにあまりにも多くのファイルを作成すると、自分のウェブサイトの応答が遅くなる可能性があります。 –

+3

@ Shyjuの答えが最適なアプローチです。このようにして正確に何の問題がありますか?あなたのコメントは明確ではありません。 –

+0

Yess Cris Prattあなたは正しいと言って、答えはそれをしようとしている –

関連する問題