回答:
Html.Partial("MyView")
「MyView」ビューをにレンダリングしMvcHtmlString
ます。これは、ビュー検索の標準ルールに従います(つまり、現在のディレクトリを確認してから、Shared
ディレクトリを確認します)。
Html.RenderPartial("MyView")
Html.Partial()
出力を応答ストリームに直接書き込むことを除いて、と同じです。ビューのコンテンツはメモリにバッファリングされないため、これはより効率的です。ただし、メソッドは出力を返さないため、機能しません@Html.RenderPartial("MyView")
。代わりに、コードブロックで呼び出しをラップする必要があります@{Html.RenderPartial("MyView");}
。
RenderPage("MyView.cshtml")
のように、指定されたビュー(ビュー名ではなくパスとファイル名で識別される)を直接応答ストリームにレンダリングしますHtml.RenderPartial()
。2番目のパラメーターとして含めることにより、ビューに任意のモデルを提供できます。
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
ますか?特定のクエリパラメータを指定して別のページをネストし、そのページ内のデータをフィルタリングし、さらに独自のレイアウトを削除したいと考えています。
私は好む
@RenderPage("_LayoutHeader.cshtml")
以上
@{ Html.RenderPartial("_LayoutHeader"); }
構文が簡単で読みやすいからです。それ以外は機能面での違いはないようです。
編集:RenderPartialの利点の1つは、パス全体やファイル拡張子を指定する必要がないことです。これにより、共通の場所が自動的に検索されます。
RenderPage
、構文のために同意します。
れるrenderPartial方法は、他のほとんどのヘルパーメソッドのようなHTMLマークアップを返しません。代わりに、コンテンツを応答ストリームに直接書き込むため、セミコロンを使用してC#の完全な行のように呼び出す必要があります。
これはとにかく応答ストリームに書き込まれるため、レンダリングされたHTMLを部分ビューからバッファリングするよりもわずかに効率的です。より一貫性のある構文が必要な場合は、Html.Partialメソッドを使用できます。これは、RenderPartialメソッドとまったく同じですが、HTMLフラグメントを返し、@ Html.Partial( "Product"、p)として使用できます。