Я новичок в asp.net MVC, поэтому, пожалуйста, потерпите меня. Мне нужно создать меню, которое повторяется в нескольких представлениях. Что лучше послужит цели Html.Action
ИЛИ Html.Partial
.
MVC Html.Partial или Html.Action
Ответы (2)
Вот что я считаю своими рекомендациями по использованию Html.Action или Html.Partial.
Html.Partial
- Используйте
Html.Partial
при рендеринге статического контента или, - Если вы собираетесь передавать данные из ViewModel, которые отправляются в основное представление
Html.Действие
- Используйте
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, которое создает новую модель представления и передает ее партиалу.
@Html.Partial("partialViewName")
- person MisterIsaak   schedule 01.08.2012