63

私はasp.netMVCを初めて使用するので、ご容赦ください。複数のビューで繰り返されるメニューを作成する必要があります。目的に役立つものHtml.ActionまたはHtml.Partial

4

2 に答える 2

122

Html.ActionまたはHtml.Partialの使用に関するガイドラインを以下に示します。

Html.Partial

  1. 静的コンテンツをレンダリングするHtml.Partial場合、または、
  2. メインビューに送信されているViewModelからデータを渡す場合

Html.Action

  1. Html.Action部分ビューにデータを入力するためにサーバーから追加のデータを実際に取得する必要がある場合に使用します

基本的に、静的な場合は、を使用しますHtml.Partial()。動的でモデルに依存しないデータの場合は、を使用しますHtml.Action()。おそらくもっと多くのシナリオがありますが、これはあなたにどこへ/どのように行くべきかについての良い考えを与えるでしょう。 Html.RenderPartial()およびHtml.RenderAction()は、上記の同様の名前の関数と交換可能です。

于 2012-08-01T20:47:48.320 に答える
67

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を呼び出します。これにより、新しいビューモデルが作成され、パーシャルに渡されます。

于 2012-08-01T21:26:56.567 に答える