Представления в ASP.NET Core MVC. Файлы _ViewStart.cshtml и _ViewImports.cshtml

Когда мы создаем новое приложение ASP.NET Core MVC, то, по умолчанию, в папке Views содержатся два файла — это файлы _ViewStart.cshtml и _ViewImports.cshtml. В целом, наше приложение может обходиться и без этих файлов, но их использование помогает нам сделать код приложения более лаконичным. Для чего необходимы эти файлы — разберемся далее.

Файл _ViewStart.cshtml

Код, который должен выполняться перед каждым представлением, должен быть помещен в файл _ViewStart.cshtml . По соглашению, _ViewStart.cshtml находится в папке Views. Операторы, перечисленные в файле _ViewStart.cshtml, выполняются перед каждым представлением. Например, если открыть этот файл в приложении ASP.NET Core MVC, то мы увидим следующий код:

@{
    Layout = "_Layout.cshtml";
}

Это означает, что для каждого представления будет применяться сначала макет _Layout.cshtml и далее будет выполняться код, находящийся в самом представлении. Файлы_ViewStart.cshtml являются иерархическими. Это означает, что, если _ViewStart.cshtml определен в папке представления Views/Page, то он будет выполняться после того, как выполнится файл, находящийся в корневой папке Views

Чтобы продемонстрировать как работает файл _ViewStart.cshtml воспользуемся приложением, которое мы разработали в предыдущей части. У нас получилась следующая структура проекта:

Изменим структуру проекта следующим образом:

1. Перенесем _AdminLayout в папку Views/Admin

2. Добавим в папку Views/Admin файл _ViewStart.cshtml со следующим содержанием:

@{
    Layout = "_AdminLayout.cshtml";
}

У вас должна получиться следующая структура проекта:

Теперь изменим код представлений Admin/Index.cshtml и Admin/Users.cshtml следующим образом:

@{
    //Layout = "~/Views/Shared/_AdminLayout.cshtml";
    ViewBag.Title = "Записи блога";
}
<h2>Все записи блога</h2>

<button>Добавить новую</button>

то есть, уберем указание на то, какой макет следует использовать представлению. Теперь можно запустить приложение и убедиться, что макет _AdminLayout.cshtml применяется только для представлений, которые возвращаются контроллером AdminController:

Админ-панель:

Файл _ViewImports.cshtml

Директивы Razor, используемые несколькими представлениями, можно указать в общем файле _ViewImports.cshtml. Например, если открыть файл _ViewImports.cshtml, созданный по умолчанию, то мы можем увидеть там ряд директив Razor, отвечающих за импорт пространств имен в представление:

@using AspViews
@using AspViews.Models

Если мы знаем, например, что во всем (или в большинстве частей) приложении необходимо будет использование классы из пространства имен System.Diagnostics, то мы можем включить в файл _ViewImports.cshtml следующую директиву:

@using System.Diagnostics

и теперь в любом представлении мы можем использовать классы System.Diagnostics без подключения этого пространства имен в каждое представление, например:

@{
    //Layout = "~/Views/Shared/_AdminLayout.cshtml";
    ViewBag.Title = "Записи блога";
    Stopwatch cs = Stopwatch.StartNew();
}
<h2>Все записи блога</h2>

<button>Добавить новую</button>
<br>
@cs.Elapsed;

Как и _ViewStart.cshtml файл _ViewImports.cshtml выполняется иерархически — вначале выполняются директивы из файла в корне папки Views и, затем, из подпапок.

Итого

Файлы _ViewStart.cshtml и _ViewImports.cshtml позволяют сократить код представлений и вынести некоторые повторяющиеся части приложения отдельно. Директивы из файла _ViewStart.cshtml выполняются перед каждым представлением, что позволяет, например, для отдельной группы представлений установить свой макет. В файл _ViewImports.cshtml обычно включаются такие повторяющиеся элементы, как импорт пространств имен, типов моделей (если модель используется в большинстве представлений).

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии