0

他のいくつかの部分ビューをロードするビューがあり、必要に応じて元のビューのモデルから部分ビューにデータを渡します。

私の質問は、(異なる db オブジェクトを表すために) 個別のコントローラーを作成Html.RenderAction()し、元のビューから部分ビューをロードするために使用する必要があるか、それともすべてのビジネス ロジックを一度に実行してビュー モデルに入れても問題ないかということです。Html.Partial()?を使用して部分ビューをロードします。

別のコントローラを作成して を使用するとHtml.RenderAction()、それらのアクションは元のビュー (すべてのアクションが部分ビュー) 以外からアクセスできなくなるため、それを行うのは奇妙に思えます。

Web サイトのエンドポイントとして機能する他のコントローラーがまだありますが、これは、部分的なビュー アクションのみを持つコントローラーをさらに作成するのは役に立たないように見える別のケースのようです。

ここには標準的な慣行がありますか、それとも現時点での好みですか?

4

1 に答える 1

3

Html.RenderAction() は使用しないでください。パフォーマンスに悪影響を及ぼす可能性のある新しい MVC パイプラインが作成されるためです。通常、Html.Partial() または Html.RenderPartial() を使用する必要があります。個別のコントローラーの作成に関しては、シナリオによって異なります。これらの部分的なアクションをそのコントローラと論理的にグループ化する必要がある場合は、そこに配置しますが、コントローラがモノリシックになりすぎている場合、またはパーシャルがおそらくサイトのさまざまな領域に表示されるある種のウィジェットである場合は、配置するのが良いかもしれませんそれらを別の WidgetController に入れます。

要約: Html パーシャル ヘルパーを使用して余分な MVC パイプラインを回避し、特定の状況でパーシャルに使用するのが適切なコントローラーを決定します。

編集: Action メソッドと Partial メソッドの違いを覚えていませんでした。可能な限り Partial() と RenderPartial() を使用してください。これらは、別のパイプラインの作成を回避します。欠点は、メイン アクションで返され、親ビューを通過したすべての情報を取得する必要があることです。Action() と RenderAction() はパフォーマンスの点でより重いですが、これらを使用して外部のコントローラーとアクションを呼び出すことができるため、必要に応じてロジックを分離できます。

于 2013-06-24T18:54:39.963 に答える