2012-02-03 6 views
4

@RenderBodyを使用して現在のコントローラ\アクションの内容を表示するマスターページがあります。私は、@ RenderBodyでレンダリングされているコントローラに応じて部分的な表示をしたいという状況に遭遇しています。これは@RenderActionまたは@RenderPartialを使って可能ですか?おかげ@RenderBodyコントローラに基づく動的コンテンツですか?

enter image description here

+2

申し訳ありませんが、これらのテンプレートを作成するツールはありますか? –

+1

@UfukHacıoğullarıhttp://www.balsamiq.com/products/mockups – torm

+0

@tormありがとうございました:) –

答えて

3

あなたはセクション(RenderSection)機能を見てみたいことがあります。スコット・グラムによってよく記述されています http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

+0

ありがとうございました。それで、@ RenderBodyの現在のコントローラを決定する方法はありますか? – NullReference

+0

nm、1つのビューで@Sectionは、それを行うだろう、ありがとう! – NullReference

1

共有ビューに移動し、_Layout.cshtmlの場所@Html.Partial("_displayCustomPartial")の中に移動します。次に、共有ビューフォルダに戻り、新しいビュー_displayCustomPartialを作成します。 _displayCustomPartial.cshtml開き、その中にこのコードを使用します

@{ 
var controllerCalled = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue; 
var actionCalled = ViewContext.Controller.ValueProvider.GetValue("action").RawValue; 
switch(controllerCalled){ 
    case "Home": 
    @Html.Partial("_homePartial"); 
    break; 
    case "Work": 
    @Html.Partial("_workPartial"); 
    break; 
    case default:break; 
} 
} 

をこのシナリオでは、あなたが(あなたがそれを使用したい場合には私もアクションコードを含む)各コントローラのシナリオの準備ができて既成の景色を眺めることが前提としています。プレマイドビューに準備ができていない場合は、別のビューを表示する代わりに、それぞれのケースで表示されるコードを入れてください。

このセクションとセクションの主な違いは、セクションがビューとモデルを共有し、部分ビューを使用すると別のモデルを含めることができることです。

関連する問題