Asp.net MVCは初めてなので、ご容赦ください。複数のビューにわたって繰り返されるメニューを作成する必要があります。目的に役立つもの Html.Action
OR Html.Partial
。
ここでは、Html.ActionまたはHtml.Partialの使用に関するガイドラインを検討します。
Html.Partial
Html.Partial
_を使用します。または、Html.Action
Html.Action
_を使用します基本的に、静的である場合は、Html.Partial()
を使用します。動的で、モデルに依存しないデータの場合は、Html.Action()
を使用します。おそらくもっと多くのシナリオがありますが、これはどこに/どのように行けば良いアイデアを提供します。 Html.RenderPartial()
とHtml.RenderAction()
は、上記の同様の名前の関数と交換可能です。
Html.Partial:最初にコントローラーアクションを押すことなくPartial Viewをレンダリングします。参照: 部分ビュー
Html.ActionController Actionを呼び出し、これはビュー/部分ビューを返す場合があります(またはそうでない場合は、HttpNotFoundをスローしたり、Jsonなどを返したりします)。
メニューにはビューモデルが必要ですか、それとも静的ですか?
静的メニューの場合、Html.Partial
がニーズに合います。静的なメニューコンテンツを部分ビュー内に配置し、Html.Partial
を呼び出してレンダリングしたい場所に呼び出します。
メニューがビューモデルから生成されている場合、eitherHtml.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を呼び出します。これにより、新しいビューモデルが作成され、パーシャルに渡されます。