Добавление RazorPages в пустой проект

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

Visual Studio предоставляет готовый шаблон для создания проекта Razor Pages. Однако иногда может возникнуть необходимость добавить функциональность Razor Pages в другие типы проектов или вообще создать проект с нуля. Поэтому рассмотрим, как добавлять функциональность и страницы RazorPages в пустой проект ASP NET Core. Если мы работаем в Visual Studio, то создадим по типу ASP NET Core Empty

Добавление Razor Page в пустой проект ASP.NET Core и C#

Если мы работаем через .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 Page

Теперь добавим страницу Razor. И в начале определим в проекте папку Pages для хранения Razor Pages. Далее в эту папку добавим новую страницу Razor.

Если мы работаем в Visual Studio, то для добавления нажмем на данную папку правой кнопкой мыши и выберем в контекстном меню пункт 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#

Если мы НЕ работаем в 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>

Запустим проект. И нам отобразится определенный на странице заголовок:

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