Razor Pages는 ASP.NET Core 2.0의 새로운 기능이다. 로직과 view model을 view 구현 code에 가깝게 하면서 ASP.NET Core app을 개발할 수 있는 간단한 방법이다. 또한, 크고 복잡한 ASP.NET Core apps의 구조 향상에도 Razor Pages를 사용할 수 있다.
MVC pattern은 사용한지 오래된 UI pattern으로 많은 장점이 있지만, MVC 기본 프로젝트 템플릿 패턴은 앱이 커지면서, 수많은 파일과 폴더를 만든다. Razor Pages는 특별히 page-based 컨셉의 동일한 문제에 새롭고 다른 방식을 제공한다. 거의 static view 또는 POST-Redirect-GET 방식의 단순한 form을 갖는 경우에 유용하다.
MVC와 Razor Pages의 기본 템플릿 구조를 살펴보자.
- MVC
Pages는 ASP.NET Core MVC의 일부이므로, ASP.NET Core MVC app에 단순히 Pages 폴더를 추가하고 Razor Pages files을 추가하므로 Pages를 사용할 수 있다.
- Razor Pages
Controllers, Views 폴더가 없다. Razor Pages는 Pages 폴더에서 app에 필요한 모든 page를 갖는다.
Razor Pages는 routing reqeust에 맞는 folder 구조를 갖는다. MVC app의 default page가 "/", "/Home", "/Home/Index"로 접속할 수 있는 반면, Razor Pages는 "/", "/Index"로 매칭된다.
하위폴더의 사용은 app의 별도 section을 생성하는 직관적인 방법이다. 모든 폴더는 root page로 Index.cshtml 파일을 가질 수 있다.
cshtml파일을 보면 새로운 지시어 '@page'를 볼 수 있다. 이 지시어는 page file의 첫줄에 항상 있어야 하며 파일 확장자는 .cshtml을 사용해야 한다. Razor Pages는 Razor-based View files과 상당히 비슷하다.
Index.cshtml
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
Razor Pages는 캡슐화, UI그룹핑을 할 수 있다. inline 또는 별도 class page models을 제공한다. handlers를 제공하여, 별도의 controller와 action methods가 필요하지 않다. 이러한 특성이 MVC app과 비교했을 때, 별도의 폴더와 파일 수를 줄여준다.
'ASP.NET Core' 카테고리의 다른 글
ASP.NET Core] Asynchronous Programming - Async, Await (0) | 2023.04.26 |
---|---|
ASP.NET Core Razor Pages] 2. Page Models, Routing, Filters (0) | 2023.02.27 |
ASP.NET Core] Razor Pages vs MVC vs Blazor 차이점 (0) | 2023.02.20 |
ASP.NET MVC vs ASP.NET Core] Logging 차이 (0) | 2023.02.15 |
ASP.NET MVC vs ASP.NET Core] Routing 차이 (0) | 2023.02.09 |
댓글