Я новичок в asp.net MVC, поэтому, пожалуйста, несите меня. Мне нужно создать меню, которое повторяется через несколько видов. Что лучше будет служить цели Html.Action
ИЛИ Html.Partial
.
MVC Html.Partial или Html.Action
Ответ 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 с одной моделью, но разные данные.