Частичные представления

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Кроме обычных представлений метод действия может также возвращать частичные представления. Их отличительной особенностью является то, что их можно встраивать в другие обычные представления. Частичные представления могут использоваться также как и обычные, однако наиболее удобной областью их использования является рендеринг результатов AJAX-запроса.

За рендеринг частичных представлений отвечает объект PartialViewResult, который возвращается методом PartialView. Итак, определим в контроллере новое действие Partial:

public ActionResult Partial() 
{
    ViewBag.Message = "Это частичное представление.";
    return PartialView();
}

Теперь добавим новое представление Partial.cshtml. Для этого при создании представления в настройках укажем, что оно будет частичным:

Создание частичных представлений в ASP.NET MVC 4

После этого в проект будет добавлен пустой файл частичного представления. Итак, добавим в частичное представление следующую строку:

<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" })

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850