Подтвердить что ты не робот

MVC Html.Partial или Html.Action

Я новичок в asp.net MVC, поэтому, пожалуйста, несите меня. Мне нужно создать меню, которое повторяется через несколько видов. Что лучше будет служить цели Html.Action ИЛИ Html.Partial.

4b9b3361

Ответ 1

Вот что я считаю своими рекомендациями по использованию Html.Action или Html.Partial

Html.Partial

  • Используйте Html.Partial при рендеринге статического содержимого или
  • Если вы собираетесь передавать данные из ViewModel, которые отправляются в основное представление

Html.Action

  • Используйте Html.Action, когда вам действительно нужно получить дополнительные данные с сервера, чтобы заполнить частичный вид

В принципе, если статично, используйте Html.Partial(). Если динамические, независимые от модели данные, используйте Html.Action(). Вероятно, есть больше сценариев, но это даст вам хорошее представление о том, где и как идти. Html.RenderPartial() и Html.RenderAction() взаимозаменяемы для вышеупомянутых выше функций.

Ответ 2

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, которое создает новую модель представления и передает ее частичному.

Ответ 3

Случай 1: Используйте метод @Html.Partial(), если у вас есть разные частичные представления с разными моделями.

Случай 2: Используйте метод @Html.Action(), если у вас есть один Partial View с одной моделью, но разные данные.