19

MVC4の学習を開始しています。Razor テンプレートまたはマスター ページに基づいてビューを作成する 2 つの可能性に出会いました。

この 2 つの実際的な違いを理解したいと思います。

今のところ、マスター ページを使用してビューを作成すると、いくつかのセクションをオーバーライドできることがわかります。たとえば、マスターが「左列」プレースホルダーと「本体」プレースホルダーを定義する場合、特定のビューの本体を定義できるだけでなく、「左列」セクションのコンテンツをレンダリングして、たとえばコントロールを表示することもできますページが置かれているコンテキスト (検索ボックスから株価ビューアーまで) にバインドされます。また、マスター ページは、Razor テンプレートを使用して定義することはできません。これは、他の構文よりもはるかに冗長です (部分的に間違っています:誰かがこの側面をハックすることができました)。

Razor レイアウトでは、特定のビューでオーバーライドできるページの連続ブロックを1 つしか定義できず、ページの他の部分の小さな変更には複数のレイアウト (DRY を破る) を使用する必要があります。私の以前の発言は正しいですか、それとも何か不足していますか?

もちろん、jQuery をうまく活用すれば、ページのどの部分にもコンテンツをレンダリングできますが、それは別の問題です。

4

2 に答える 2

26

Razor でセクションを使用できます。Scott Gu は、ここでそれらについてブログを書いています

レイアウトでは、必要な数のセクションを定義できます。

<div id="leftMenu">
    @RenderSection("LeftMenu", required: false)
</div>

ビューでオーバーライドできるもの:

@section LeftMenu {
    <div>... here comes the left menu for this view ...</div>
}

ビューでセクションが定義されているかどうかをテストし、定義されていない場合はデフォルトのコンテンツを提供することもできます。

@if (IsSectionDefined("LeftMenu")) { 
    @RenderSection("LeftMenu")
}
else { 
    <div>Some default left menu</div>
}
于 2012-11-10T13:07:36.370 に答える