Файл _ViewImports.cshtml позволяет по умолчанию подключить на страницы Razor некоторый функционал. Сначала рассмотрим ситуацию, с которой мы можем столкнуться. Пусть у нас в проекте есть некоторый класс Person:
namespace RazorPagesApp { public record class Person(string Name, int Age); }
Допустим, мы хотим использовать тип Person на странице Index.cshtml:
@page @* Подключаем пространство имен класса Person *@ @using RazorPagesApp @{ Person tom = new Person("Tom", 37); } <h2>Person Data</h2> <p>Name: <b>@tom.Name</b></p> <p>Age: <b>@tom.Age</b></p>
Чтобы использовать тип Person на странице Razor, мы вынуждены импортировать с помощью директивы using пространство имен, где этот тип определен. В данном случае ничего сложного нет, однако если у нас куча страниц, где мы хотим использовать этот же тип Person, то мы будем вынуждены определить то же самое выражение импорта на всех страницах. Это может создавать некоторые неудобства. Во-первых, мы повторяем один и тот же код. Во-вторых, если пространство имен изменится, то мы вынуждены будем менять все страницы. В-третьих, возможно, мы захотим подключить еще какие-то пространства имен, что увеличит работу, если будут какие-то изменения. Файл _ViewImports.cshtml решает эту проблему
Итак, добавим в проект в папку Pages файл _ViewImports.cshtml. Для его добавления в Visual Studio можно применять шаблон Razor View Imports:
Далее добавим в этот файл подключение пространства имен класса Person:
@* Подключаем пространство имен класса Person *@ @using RazorPagesApp
В этом случае функциональность пространства имен RazorPagesApps
будет автоматически подключаться на все страницы Razor.
И тогда мы можем убрать из страницы Index.cshtml подключение пространства имен:
@page @{ Person tom = new Person("Tom", 37); } <h2>Person Data</h2> <p>Name: <b>@tom.Name</b></p> <p>Age: <b>@tom.Age</b></p>