子テンプレートをレンダリングする適切な方法は何ですか?
そして、違いは何ですか?どちらも私にとってはうまくいくようです。
そして、なぜ機能し@Html.RenderPartial()
なくなったのですか?
子テンプレートをレンダリングする適切な方法は何ですか?
そして、違いは何ですか?どちらも私にとってはうまくいくようです。
そして、なぜ機能し@Html.RenderPartial()
なくなったのですか?
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)
私は好きです
@RenderPage("_LayoutHeader.cshtml")
以上
@{ Html.RenderPartial("_LayoutHeader"); }
構文が簡単で読みやすいからです。それ以外は、機能面での違いはないようです。
編集:RenderPartialの利点の1つは、パス全体またはファイル拡張子を指定する必要がないことです。これにより、一般的な場所が自動的に検索されます。
RenderPartialメソッドは、他のほとんどのヘルパー メソッドのように HTML マークアップを返しません。代わりに、コンテンツを直接応答ストリームに書き込むため、セミコロンを使用して C# の完全な行のように呼び出す必要があります。
これは、レンダリングされた HTML を部分ビューからバッファリングするよりもわずかに効率的です。これは、とにかく応答ストリームに書き込まれるためです。より一貫した構文が必要な場合は、Html.Partialメソッドを使用できます。このメソッドはRenderPartialメソッドとまったく同じですが、HTML フラグメントを返し、@Html.Partial("Product", p) として使用できます。
部分ビューを使用してモデルを渡すこともできます。@Html.Partial("MyView","MyModel");