2012-03-21 16 views
1

サイト構造を持つ基本レイアウトがあります。ASP MVC 4のコントローラごとに異なるデザインパーツを持つ一般的なレイアウト

<html> 
<head>...</head> 
<body> 
<div id="sidebar">...</div> 
<div id="entry">@RenderSection("Entry", true)</div> 
<div id="footer">...</div> 
</body> 

各コントローラの各アクションは、そのビュー自体のエントリセクションで定義:このデフォルトのレイアウトにIは、ヘッダタグ、本体構造とフッタを定義します。

<!-- in View/Index.cshtml --> 
@section Entry { 
    Hello from Index action. 
} 

<!-- in View/Uploads.cshtml --> 
@section Entry { 
    Hello from Uploads action. 
} 

<!-- in View/Users.cshtml --> 
@section Entry { 
    Hello from Users action. 
} 

しかし、私はまた、コントローラごとに異なるサイドバーを定義したいと考えています。 @RenderSection( "SideBar"、true)をメインレイアウトに配置すると、各コントローラアクションのサイドバーコードを繰り返す必要があります。私はまた、メインのレイアウトでサイドバーデザインコードを定義することはできません。コントローラごとに異なるsibebarsを使用したいからです(ただし、コントローラの各アクションに同じサイドバーを使用します)。

各ビューでサイドバーのデザインコードを繰り返さずにこの問題を解決するにはどうすればよいですか?

解決策https://stackoverflow.com/a/5573970が見つかりましたが、コントローラごとに複製ベースサイト構造が必要になります。

答えと私の悪い英語:(申し訳ありませんのおかげでは。

答えて

2

が次にあなたが唯一の特定のコントローラレイアウトのセクションを定義することができます@RenderSection("SideBar", false)

を入れてください。

をあなたはのための別のレイアウトを定義することもできますコントローラーレイアウトはデフォルトレイアウトの代わりにコントローラレイアウト(サイドバーを置くことができる場所)を使用しますコントローラレイアウトはデフォルトレイアウトを使用します

+0

Controでどのようにデフォルトレイアウトを使用できますかllersのレイアウト? – Dmitriy

+0

@ {Layout = "〜/ Views/Shared/Default.cshtml"; } –

+0

ああ、私はレイアウトでレイアウトを定義する能力を忘れていました。ありがとう! – Dmitriy

関連する問題