Hello Razor Pages

Jaemyeong Lee·2025년 3월 11일

1. Razor Pages란?

Razor Pages는 ASP.NET Core에서 사용하는 웹 개발 방식 중 하나로, 기존의 MVC(Model-View-Controller)와 달리 Page 기반의 개발 방식을 채택합니다. 다음과 같은 구조를 가집니다:

  • Model: 데이터 및 로직
  • View: 사용자에게 보여지는 UI
  • PageModel (*.cshtml.cs): 컨트롤러 역할을 담당 (기능과 로직 처리)

📌 MVC는 M + V + C, Razor Pages는 M + V + VM(ViewModel) 방식이라고 보면 됩니다.


2. Razor Pages 프로젝트 준비

✅ 기존 MVC 구조 정리

MVC에서 사용하던 Controllers, Models 폴더는 제거합니다.

✅ 새 폴더 생성

  • Pages 폴더 생성
  • Pages/_ViewImports.cshtml 파일 추가
@using HelloEmpty
@using HelloEmpty.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

✅ Index Razor Page 생성

VS 2022 기준

  • Pages 폴더 우클릭 → 새 항목 추가 → Razor Page (비어 있음) 선택
  • Index.cshtmlIndex.cshtml.cs가 생성됨

3. Razor Page 코드 분석

📄 Index.cshtml.cs

using HelloEmpty.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace HelloEmpty.Pages
{
    public class IndexModel : PageModel
    {
        [BindProperty]
        public HelloMessage HelloMsg { get; set; }

        public string Noti { get; set; }

        public void OnGet()
        {
            HelloMsg = new HelloMessage()
            {
                Message = "Hello, Razor Pages!"
            };
        }

        public void OnPost()
        {
            Noti = "Message Changed!";
        }
    }
}

OnGet()은 페이지 최초 진입 시 실행되고, OnPost()는 폼 제출 시 실행됩니다.


📄 Index.cshtml

@page
@model HelloEmpty.Pages.IndexModel

<html>
<head>
    <title>Hello Razor Pages!</title>
</head>
<body>
    <h1>@Model.HelloMsg.Message</h1>
    <hr />
    <h2>@Model.Noti</h2>

    <form method="post">
        <label asp-for="HelloMsg.Message">Enter Message</label>
        <br />
        <input type="text" asp-for="HelloMsg.Message" />
        <br />
        <button type="submit">Submit</button>
    </form>
</body>
</html>

Razor Pages에서는 asp-controllerasp-action이 필요 없습니다. Razor Page는 View와 Controller가 자동으로 1:1 매핑되기 때문입니다.


4. Program.cs 구성

var builder = WebApplication.CreateBuilder(args);

// Razor Pages 등록
builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

// Razor Pages 매핑
app.MapRazorPages();

app.Run();

MVC와 달리 MapControllerRoute를 사용하지 않고 MapRazorPages()로 경로를 처리합니다.


5. 라우팅 규칙

  • Pages/Index.cshtml/
  • Pages/Privacy.cshtml/Privacy

폴더 구조 기반으로 자동 라우팅이 이루어집니다.


6. Razor Pages의 장점

  • View와 Controller 역할이 한 쌍으로 붙어있어 관리하기 편리
  • 간결한 구조로 학습하기 쉬움
  • MVVM 패턴 기반으로 설계되어 유지보수성이 높음

profile
李家네_공부방

0개의 댓글