11

PartialViewResult を返すコントローラーとアクションがあり、それを使用して表示します。テストのために、現在の DateTime を出力し (動作中)、ビューでそれが null かどうかを確認するので、何が得られたかがわかります。

そのビューを別のビューに「埋め込もう」とするとHtml.Action、現在の日時が取得されるため、アクションが呼び出されます。

しかしHtml.Partial、ビューがnullでレンダリングされている場合、アクションメソッドは呼び出されません。また、2 つのブレークポイントとデバッガーも確認します。後者の場合、my アクション メソッドは呼び出されません。

アクション方法:

public PartialViewResult Test()
{
  return PartialView(DateTime.Now);
}

(一部) ビュー:

@model DateTime?

<p>@(Model ?? DateTime.MinValue)</p>

メインビューからの呼び出しは または のいずれ@Html.Action("Test")@Html.Partial("Test")です。

4

1 に答える 1

25

Html.Action() はアクション メソッドを呼び出しますが、Html.Partial() は呼び出しません。Html.Partial() は部分ビューをレンダリングするだけで、静的コンテンツがある場合、またはビュー データを既に読み込んでいる場合に役立ちます。

Html.Partial("PartialName", Model.PartialData);

モデルデータが渡された PartialName ビューをレンダリングします。これは、サーバーへの追加のリクエストを発生させることなく、ビューをきれいなセクションに分割する優れた方法です。

Html.Action("Test")

Test アクションを呼び出し、結果をレンダリングします。

これが、NULL DateTime が表示される理由です。Html.Action() は実際にアクションを呼び出し、DateTime を計算し、ビューをレンダリングしますが、Html.Partial() はビューをレンダリングするだけです。

于 2012-11-18T18:50:09.907 に答える