Файл _ViewImports.cshtml

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

Файл _ViewImports.cshtml позволяет по умолчанию подключить в представления некоторый функционал. Сначала рассмотрим ситуацию, с которой мы можем столкнуться. Пусть у нас в проекте есть некоторый класс Person:

namespace MvcApp
{
    public record class Person(string Name, int Age);
}

Допустим, мы хотим использовать тип Person в представлении Index.cshtml:

@using MvcApp @* Подключаем пространство имен класса Person *@
@{
    Layout = null;
    Person tom = new Person("Tom", 37);
}
<h2>Person Data</h2>
<h3>Name: @tom.Name</h3>
<h3>Age: @tom.Age</h3>

Чтобы использовать тип Person в представлении, мы вынуждены импортировать с помощью директивы using пространство имен, где этот тип определен. В данном случае ничего сложного нет, однако если у нас куча представлений, где мы хотим использовать этот же тип Person, то мы будем вынуждены определить то же самое выражение импорта во всех представлениях. Это может создавать некоторые неудобства. Во-первых, мы повторяем один и тот же код. Во-вторых, если пространство имен изменится, то мы вынуждены будем менять все представления. В-третьих, возможно, мы захотим подключить еще какие-то пространства имен, что увеличит работу, если будут какие-то изменения. Файл _ViewImports.cshtml решает эту проблему

Итак, добавим в проект в папку Views файл _ViewImports.cshtml. Для его добавления в Visual Studio можно применять шаблон Razor View Imports:

ViewImport in ASP.NET Core MVC и C#

Далее добавим в этот файл подключение пространства имен класса Person:

@using MvcApp @* Подключаем пространство имен класса Person *@
файл _ViewImports.cshtml в ASP.NET Core MVC и C#

В этом случае функциональность пространства имен MvcApp будет автоматически подключаться во все представления.

И тогда мы можем убрать из представления Index.cshtml подключение пространства имен:

@{
    Layout = null;
    Person tom = new Person("Tom", 37);
}
<h2>Person Data</h2>
<h3>Name: @tom.Name</h3>
<h3>Age: @tom.Age</h3>
файл _ViewImports.cshtml и подключение в представления ASP.NET Core MVC и C#

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

ViewImport in ASP.NET Core MVC и C#

И в этмо случае все директивы и выражения из файла Views/Home/_ViewImports.cshtml будут применяться к представлениям только из папки Views/Home. Кроме того, ко всем представлениям во всех папках продолжит применяться глобальный файл Views/_ViewImports.cshtml

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