Файл _ViewImports.cshtml

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

Файл _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:

_ViewImports.cshtml в Razor Pages ASP.NET Core и C#

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

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

В этом случае функциональность пространства имен 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>
файл _ViewImports.cshtml и подключение на страницу Razor Pages в ASP.NET Core и C#
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850