Учебники

ASP.NET Core — Razor View Start

В этой главе мы обсудим Razor View Start. Механизм представления Razor в MVC имеет соглашение, согласно которому он ищет любой файл с именем _ViewStart.cshtml и выполняет код внутри этого файла. перед выполнением кода внутри индивидуального представления.

ViewStart Cshtml

  • Код внутри файла ViewStart не может отображаться в HTML-выводе страницы, но его можно использовать для удаления дублирующего кода из блоков кода внутри отдельных представлений.

  • В нашем примере, если мы хотим, чтобы каждое представление использовало представление Layout, созданное в предыдущей главе, мы могли бы поместить код для установки представления Layout в ViewStart вместо того, чтобы иметь код внутри каждого представления.

Код внутри файла ViewStart не может отображаться в HTML-выводе страницы, но его можно использовать для удаления дублирующего кода из блоков кода внутри отдельных представлений.

В нашем примере, если мы хотим, чтобы каждое представление использовало представление Layout, созданное в предыдущей главе, мы могли бы поместить код для установки представления Layout в ViewStart вместо того, чтобы иметь код внутри каждого представления.

пример

Давайте возьмем простой пример, чтобы увидеть, как это работает. В нашем приложении мы не хотим, чтобы каждое представление указывало, что его представление Layout является _Layout.cshtml . Поэтому щелкните правой кнопкой мыши папку «Виды» и выберите « Добавить» → «Новый элемент» .

Макет Cshtml Добавить новый элемент

В ASP.NET MVC есть специальный шаблон для страницы ViewStart, поэтому выберите MVC View Start Page на средней панели. Наиболее важной частью здесь является то, что этот файл называется _ViewStart.cshtml . Теперь нажмите на кнопку Добавить.

Просмотр Cshtml

Основное использование файла ViewStart — настройка представления «Макет».

Теперь давайте перейдем к файлу Index.cshtml и обрежем строку Layout, а затем добавим ее в файл ViewStart, как показано в следующей программе.

@{ 
   Layout = "~/Views/Shared/_Layout.cshtml"; 
}
  • Когда инфраструктура MVC отправляется для визуализации представления, она увидит, существует ли файл ViewStart где-нибудь в иерархии папок.

  • Мы поместили _ViewStart прямо в нашу папку Views. Это повлияет на все представления во всех папках, которые находятся в папке Views, и на представления внутри Home folder, и на Shared folder, и на любые другие папки контроллера, которые мы могли бы добавить в будущем.

  • Если мы возьмем ViewStart и поместим его только в домашнюю папку, то этот небольшой кусочек кода будет выполняться только при рендеринге одного из этих представлений в домашней папке.

  • У нас даже может быть несколько файлов ViewStart, поэтому мы можем иметь ViewStart.cshtml здесь, в папке Views, который устанавливает представление Layout для всех представлений.

  • Но если бы мы хотели изменить это значение по умолчанию для всех представлений только в папке Home, у нас мог бы быть другой ViewStart в папке Home, который устанавливает макет на что-то другое.

Когда инфраструктура MVC отправляется для визуализации представления, она увидит, существует ли файл ViewStart где-нибудь в иерархии папок.

Мы поместили _ViewStart прямо в нашу папку Views. Это повлияет на все представления во всех папках, которые находятся в папке Views, и на представления внутри Home folder, и на Shared folder, и на любые другие папки контроллера, которые мы могли бы добавить в будущем.

Если мы возьмем ViewStart и поместим его только в домашнюю папку, то этот небольшой кусочек кода будет выполняться только при рендеринге одного из этих представлений в домашней папке.

У нас даже может быть несколько файлов ViewStart, поэтому мы можем иметь ViewStart.cshtml здесь, в папке Views, который устанавливает представление Layout для всех представлений.

Но если бы мы хотели изменить это значение по умолчанию для всех представлений только в папке Home, у нас мог бы быть другой ViewStart в папке Home, который устанавливает макет на что-то другое.

Давайте сохраним все файлы и запустим приложение.

Файл ViewStart

Вы увидите, что ваша домашняя страница по-прежнему отображается так же, как и раньше, и у нас все еще действует представление «Макет».