Перейти к содержанию

Использование частичных представлений для инкапсуляции разметки

Частичные представления позволяют разбить крупное представление на более мелкие, многоразовые фрагменты.
Возьмем пример приложения со списком дел. У нас есть страница Razor под названием ViewToDo.cshtml, которая отображает один элемент списка. Позже мы создаем новую страницу Razor, RecentToDos.cshtml, которая отображает пять последних дел. Чтобы не копировать код из ViewToDo.cshtml, создадим частичное представление с именем _ToDo.cshtml:

@model ToDoItemViewModel
<h2>@Model.Title</h2>
<ul>
    @foreach (var task in Model.Tasks)
    {
        <li>@task</li>
    }
</ul>

И ViewToDo.cshtml, и RecentToDos.cshtml могут отображать частичное представление _ToDo.cshtml. Частичные представления отображаются с помощью тег-хелпера <partial />:
@page
@model RecentToDoListModel
@foreach(var todo in Model.RecentItems)
{
    <partial name="_ToDo" model="todo" />
}

Если указать частичное представление без указания абсолютного пути и расширения файла, фреймворк будет искать файл в папке Pages, начиная от текущего местоположения. Например, пусть страница расположена в Pages/Agenda/ToDos/ResentToDos.cshtml, тогда фреймворк будет искать файл с именем _ToDo.cshtml в следующих местах:

  • Pages/Agenda/ToDos/;
  • Pages/Agenda/;
  • Pages/;
  • Pages/Shared/;
  • Views/Shared/;

Будет выбран первый найденный файл.
Если указать расширение (_ToDo.cshtml), то поиск будет произведен только в текущей папке. Если же указать абсолютный (относительно папки Pages, например /Pages/Agenda/_ToDo.cshtml) путь, то только там и будет осуществлен поиск.


Последнее обновление : 19 апреля 2023 г.
Дата создания : 25 сентября 2022 г.

Комментарии

Комментарии