Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
Кроме обычных представлений метод действия может также возвращать частичные представления. Их отличительной особенностью является то, что их можно встраивать в другие обычные представления. Частичные представления могут использоваться также как и обычные, однако наиболее удобной областью их использования является рендеринг результатов AJAX-запроса.
За рендеринг частичных представлений отвечает объект PartialViewResult
, который возвращается методом PartialView.
Итак, определим в контроллере новое действие Partial:
public ActionResult Partial() { ViewBag.Message = "Это частичное представление."; return PartialView(); }
Теперь добавим новое представление Partial.cshtml
. Для этого при создании представления в настройках укажем, что оно будет частичным:
После этого в проект будет добавлен пустой файл частичного представления. Итак, добавим в частичное представление следующую строку:
<h2>@ViewBag.Message</h2>
После этого мы можем обратиться к действию Partial, как к обычному действию контроллера, и оно нам вернет частичное представление:
По своему действию частичное представление похоже на обычное, только для него по умолчанию не определяется мастер-страница.
Но смысл применения частичных представлений состоит не в этом, иначе они бы никак не отличались от обычных. Поэтому теперь встроим его в какое-нибудь другое представление. Для этого нам надо применить в любом месте обычного представления хелпер Html.Partial:
@Html.Partial("Partial")
В данном случае в качестве параметра мы указываем имя частичного представления без расширения файла. Но в этом случае надо учитывать, что
передать ViewBag.Message
из метода Partial, как в предыдущем примере, мы уже не сможем. И если мы все-таки хотим передать его в частичное представление,
то нам надо будет передать его из метода контроллера, связанного с главным представлением. То есть если мы используем частичное представление
в представлении Index.сshtml, то в методе Index мы можем написать:
public ActionResult Index() { ViewBag.Message = "Это вызов частичного представления из обычного"; return View(); }
И, таким образом, сообщение во ViewBag.Message
будет передано как главному, так и частичному представлению.
Кроме хелпера Html.Partial
частичное представление можно встроить с помощью другого хелпера - Html.RenderPartial
.
Этот хелпер также принимает имя представления, только он используется не в строчных выражениях кода Razor, а в блоке кода - то есть
обрамляется фигурными скобками:
@{Html.RenderPartial("Partial");}
Еще одно отличие между двумя способами заключается в том, что Html.RenderPartial
напрямую пишет вывод
в выходной поток, поэтому может работать чуть быстрее, чем Html.Partial
.
Также как и в случае с обычными представлениями, мы можем создавать строго типизированные частичные представления, указав в шапке файла директиву @model:
@model IEnumerable<string> <h2>Список стран</h2> <ul> @foreach (string t in Model) { <li>@t</li> } </ul>
Тогда мы можем вызвать это представление так: @Html.Partial("Partial", new string[] { "Russia", "USA", "Canada", "France" })