Основы Razor Pages

Определение страниц Razor

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

Основой функциональности платформы Razor Pages являются страницы Razor, которые обрабатывают приходящие к приложению запросы. Рассмотрим, как определять страницы Razor. Для этого создадим новый проект по типу ASP NET Core Empty. По умолчанию проект этого типа не подключает функциональность Razor Pages, поэтому после создания проекта первым делом подключим в него функциональность Razor Pages. Для этого откроем файл Program.cs и изменим его следующим образом:

var builder = WebApplication.CreateBuilder(args);

// добавляем в приложение сервисы Razor Pages
builder.Services.AddRazorPages();

var app = builder.Build();

// добавляем поддержку маршрутизации для Razor Pages
app.MapRazorPages();  

app.Run();

Добавление страницы Razor Page

По умолчанию согласно условностям страницы Razor размещаются в проекте в папке Pages. А строка запроса URL будет сопоставляться с определенной страницей Razor на основании ее расположения в проекте в папке Pages. Примеры строк URL и сопоставленных с ними страниц:

Путь к странице

URL

/Pages/Index.cshtml

/ или /Index

/Pages/Contact.cshtml

/Contact

/Pages/Store/Contact.cshtml

/Store/Contact

/Pages/Store/Index.cshtml

/Store или /Store/Index

Поэтому добавим в проект папку Pages. Затем в папку Pages добавим новую страницу Razor. Для этого нажмем на данную папку правой кнопкой мыши и выберем в контекстном меню пункт Add -> New Item. Далее среди шаблонов выберем шаблон Razor Page - Empty и назовем новый файл Index.cshtml:

Создание Razor Page в ASP.NET Core и C#

После создания этой страницы в проект в папку Pages будут добавлены два файла - сама страница Index.cshtml и связаный с ней файл кода Index.cshtml.cs.

Страница Razor Page и файл связанного кода в ASP.NET Core и C#

По умолчанию файл Index.cshtml выглядит следующим образом:

@page
@model RazorPagesApp.Pages.IndexModel
@{
}

Любая страница Razor должна начинаться с директивы @page - именно эта директива указывает, что данный файл представляет страницу Razor. После этой директивы может помещаться код html, какие-то выражения синтаксиса Razor. Так, в данном случае с помощью директивы @model определяет модель представления - в данном случае класс IndexModel - класс, который определен в файле Index.cshtml.cs. Но в принципе опреление модели необязательно. Например, изменим код страницы следующим образом:

@page

<h2>Hello METANIT.COM</h2>

Это простейшая страница Razor, которая определяет заголовок

Определение страницы Razor Page в ASP.NET Core и C#

При этом использование модели на странице в принципе необязательно, как видно из примера выше.

Подобным образом мы можем использовать и другие страницы. Например, добавим в папку Pages новую страницу Razor, которую назовем About.cshtml

страницы Razor Pages на C#

Определим на ней какое-нибудь простейшее содержимое:

@page

<h2>О сайте</h2>

После этого мы можем обратиться к этой странице по адресу "/About":

обращение к странице Razor Pages в ASP.NET Core и C#

Переопределение каталога страниц

Хотя обычно страницы Razor помещаются в проекте в каталог Pages, но это необязательно. Например, определим в проекте новую папку MyPages. И далее в эту папку добавим новую страницу Razor Index.cshtml:

Установка каталога для страниц Razor в ASP.NET Core и C#

Определим на этой странице какой-нибудь простейший контент, например:

@page

<h2>Index Page from MyPages folder</h2>

Для изменения каталога для Razor Pages необходимо настроить соответствующие сервисы. Для этого перейдем к файлу Program.cs и изменим его следующим образом:

var builder = WebApplication.CreateBuilder(args);

// добавляем в приложение сервисы Razor Pages
builder.Services.AddRazorPages(options => options.RootDirectory = "/MyPages");

var app = builder.Build();

// добавляем поддержку маршрутизации для Razor Pages
app.MapRazorPages();  

app.Run();

Метод AddRazorPages() в качестве параметра принимает делегат Action, который, в свою очередь, имеет параметр RazorPagesOptions. Через этот параметр можно задать некоторые базовые настройки для Razor Pages. В частности, свойство options.RootDirectory позволяет установить корневой каталог для страниц Razor.

Соответственно теперь запросы к приложению будут обрабатываться страницами из папки "MyPages":

Настройка страниц Razor Pages и AddRazorPages в ASP.NET Core и C#
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850