私はasp.netMVCを初めて使用するので、ご容赦ください。複数のビューで繰り返されるメニューを作成する必要があります。目的に役立つものHtml.Action
またはHtml.Partial
。
2 に答える
Html.ActionまたはHtml.Partialの使用に関するガイドラインを以下に示します。
Html.Partial
- 静的コンテンツをレンダリングする
Html.Partial
場合、または、 - メインビューに送信されているViewModelからデータを渡す場合
Html.Action
Html.Action
部分ビューにデータを入力するためにサーバーから追加のデータを実際に取得する必要がある場合に使用します
基本的に、静的な場合は、を使用しますHtml.Partial()
。動的でモデルに依存しないデータの場合は、を使用しますHtml.Action()
。おそらくもっと多くのシナリオがありますが、これはあなたにどこへ/どのように行くべきかについての良い考えを与えるでしょう。 Html.RenderPartial()
およびHtml.RenderAction()
は、上記の同様の名前の関数と交換可能です。
Html.Partial:最初にコントローラーアクションをヒットせずに部分ビューをレンダリングします。参照:部分ビュー
Html.Actionコントローラーアクションを呼び出します。これにより、ビュー/部分ビューが返される場合があります(または、HttpNotFoundをスローしたり、Jsonを返したりする場合もあります)。
メニューにはビューモデルが必要ですか、それとも静的ですか?
静的メニューの場合Html.Partial
は、ニーズに適合します。静的メニューコンテンツを部分ビュー内に配置し、Html.Partial
レンダリングする場所を呼び出します。
メニューがビューモデルから生成されている場合は、次のいずれ Html.Partial
かを使用できHtml.Action
ます。
Html.Partialを使用してビューモデルを連鎖させる:
public class MenuViewModel {
// menu data goes here
}
public class GeneralViewModel : MenuViewModel {
// general view info goes here
}
public ActionResult Index() {
return View(new GeneralViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Partial("_partialName", model)</div>
ここでは、完全なビューモデルをビューに渡し、ビューはPartialを呼び出し、そのモデルを部分ビューに渡します。
** Html.Actionを使用してモデルを分離する:**
public ActionResult Index() {
return View(new GeneralViewModel());
}
public ActionResult MenuView() {
return PartialView(new MenuViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Action("MenuView")</div>
ここで、ビューはコントローラーアクションMenuViewを呼び出します。これにより、新しいビューモデルが作成され、パーシャルに渡されます。