2016-06-17 9 views
0

私は現在、ASP.NET webformsソリューションをMVCに変換しています。ASP.NET MVCでビューのヒーリーを構造化する最良の方法は何ですか?

webformsではsite.masterの他に、共通コードを保持し、各セクションのインポートを行うマスターページがあります。だから、通常のページの継承がそうのようになります:MVCで

Site.master -> section.Master -> page.aspx 

私はセクションに共通のコードを配置する場所へと不明確です。唯一の解決策である部分的なビューにセクションコンテンツを分割していますか?だからそれはなる?

Layout.cshtml -> page.cshtml -> any-number-of-partial-views 

例を与えることを私はすべての10本のセクションのページ間で共有される単一のCSSファイルが必要な場合、私は部分的なビューでそれを入れて、各ページにレンダリングするが、非常に効率的な感じがしないことができます。それとも、私はこの新しい仕事の仕方に頭を下げる必要があるかもしれません。

+0

たとえばRenderSectionsを見て、あなたのレイアウトで部分的なビューを使うこともできます。 –

+0

ビュー間で共有されるすべてのCSSファイルへの参照は、_Layout.cshtmlにあるheaderタグに記述する必要があります – RBT

答えて

0

MVCでもsectionsを使用できます。で

_Layout.cshtmlあなたはこのような何かがあるかもしれません:

@RenderSection("testSection",required:false) 

そして、あなたはHTMLは、このセクションでレンダリングされるべきかを指定することができますかrequiredに設定されているので、あなたが一緒にそれをすべて残すことができ、あなたの子ビューで

false:

@section testSection{ 

    <h1>Test</h1> 

} 
0

部分的な表示は、コードをいくつかの場所で再利用したい場合は大変です。

View> ControllerNameAsFolderName>ビューページ(ここに配置)内に部分ビューを配置すると、同じコントローラビューでのみ、または共有フォルダ内でもグローバルに使用できます。

sectionは別のオプションです。これはUserControl(ウェブフォーム)です。この場合には、あなたがsection_Layout.cshtmlでページを作成することができ、あなたがビューページから<head>の内側(メタに関する情報のような)何かを入れたいと仮定レイアウトページのセクション参照@RenderSection("sectionName", required:false)を作成し、

@section sectionName{ 
    <div>content goes here</div> 
} 

ようなビューページにそれを使用し、ビューページでそのsectionを使用してください。

この方法で、任意のページからDOM構造の特定の場所にコードを配置できます。 sectionには、required:false/trueというマークを付けることができます。

関連する問題