Visual Studio предоставляет готовый шаблон для создания проекта Razor Pages. Однако иногда может возникнуть необходимость добавить функциональность Razor Pages в другие типы проектов или вообще создать проект с нуля. Поэтому рассмотрим, как добавлять функциональность и страницы RazorPages в пустой проект ASP NET Core. Если мы работаем в Visual Studio, то создадим по типу ASP NET Core Empty
Если мы работаем через .NET CLI, то создадим проект по типу webapp, выполнив в терминале команду
dotnet new webapp
После создания проекта первым делом подключим в него функциональность Razor Pages. Для этого откроем файл Program.cs. По умолчанию он имеет примерно следующее содержимое:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
Изменим его следующим образом:
var builder = WebApplication.CreateBuilder(args); // добавляем в приложение сервисы Razor Pages builder.Services.AddRazorPages(); var app = builder.Build(); // добавляем поддержку маршрутизации для Razor Pages app.MapRazorPages(); app.Run();
Теперь добавим страницу Razor. И в начале определим в проекте папку Pages для хранения Razor Pages. Далее в эту папку добавим новую страницу Razor.
Если мы работаем в Visual Studio, то для добавления нажмем на данную папку правой кнопкой мыши и выберем в контекстном меню пункт Add -> New Item. Далее среди шаблонов выберем шаблон Razor Page - Empty и назовем новый файл Index.cshtml:
После создания этой страницы в проект в папку Pages будут добавлены два файла - сама страница Index.cshtml и связаный с ней файл кода Index.cshtml.cs.
Если мы НЕ работаем в Visual Studio, то надо в папке Pages создать текстовый файл Index.cshtml
.
При добавлении в Visual Studio файл Index.cshtml по умолчанию выглядит следующим образом:
@page @model RazorPagesApp.Pages.IndexModel @{ }
Фактически это пустая страница. Директива @page указывает, что это страница Razor. А директива @model - в данном случае это класс привязанного к странице кода IndexModel. Согласно условностям класс модели называется по имени страницы плюс суффикс "Model".
А файл Index.cshtml.cs при добавлении в Visual Studio содержит простейшее определение модели IndexModel:
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; namespace RazorPagesApp.Pages { public class IndexModel : PageModel { public void OnGet() { } } }
В классе модели определен метод OnGet(). Этот метод обрабатывает GET-запросы. В данном случае он пуст. В реальности в данном случае он нам не понадобится.
В дальнейшем мы подробно разберем обработку запросов в Razor Pages. А пока определим на странице какое-нибудь простейшее содержимое. Для этого изменим файл Index.cshtml следующим образом:
@page <h2>Hello METANIT.COM!</h2>
Запустим проект. И нам отобразится определенный на странице заголовок: