본문 바로가기
.NET

[.NET] MVC 와 Razor Page 의 반환 유형(Action Result)의 차이에 대해서 알아보자

by 가든가든 2023. 3. 9.
728x90

MVC ApplicationRazor Page Application은 모두 ASP.NET Core 프레임워크에서 웹 애플리케이션을 구축하기 위한 방법입니다. 그러나 이 두 가지 방법은 반환 유형에서 차이가 있습니다.

MVC Application에서는 Action Result를 반환하여 클라이언트에게 응답을 보냅니다. 반환되는 Action Result는 일반적으로 ViewResult, RedirectToActionResult, JsonResult, FileResult 등의 클래스로 구현됩니다. 이러한 Action Result는 Razor 뷰를 사용하여 HTML을 생성하거나 JSON 데이터를 반환하고, 리디렉션을 수행하거나 파일을 반환할 수 있습니다.

MVC

MVC Application에서는 일반적으로 다음과 같은 반환 유형을 사용합니다.

  • ViewResult: 뷰를 렌더링합니다.
  • PartialViewResult: 부분 뷰를 렌더링합니다.
  • RedirectResult: 지정된 URL로 리디렉션합니다.
  • RedirectToRouteResult: 지정된 라우팅 경로로 리디렉션합니다.
  • JsonResult: JSON 형식의 데이터를 반환합니다.
  • FileResult: 파일을 다운로드하거나 파일 콘텐츠를 반환합니다.

다음은 ViewResult와 RedirectResult를 반환하는 간단한 예시입니다.

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    public IActionResult RedirectExample()
    {
        return Redirect("/Home/Index");
    }
}

위의 코드에서 Index() 메서드는 ViewResult를 반환하여 뷰를 렌더링하고, RedirectExample() 메서드는 RedirectResult를 반환하여 지정된 URL로 리디렉션합니다.

Razor Page

반면에 Razor Page Application에서는 Page 클래스의 OnGet, OnPost 등의 메서드를 사용하여 클라이언트에게 응답을 보냅니다. 이러한 메서드는 Razor 페이지를 렌더링하고, 데이터를 처리하고, 데이터베이스에서 데이터를 쿼리하는 등의 작업을 수행합니다. Razor 페이지는 @page 디렉티브를 사용하여 정의됩니다.

Razor Page Application에서는 다음과 같은 반환 유형을 사용합니다.

  • PageResult: Razor 페이지를 렌더링합니다.
  • PartialViewResult: 부분 뷰를 렌더링합니다.
  • RedirectResult: 지정된 URL로 리디렉션합니다.
  • JsonResult: JSON 형식의 데이터를 반환합니다.
  • FileContentResult: 파일을 다운로드하거나 파일 콘텐츠를 반환합니다.

다음은 PageResult와 RedirectResult를 반환하는 간단한 Razor 페이지의 예시입니다.

public class IndexModel : PageModel
{
    public IActionResult OnGet()
    {
        return Page();
    }

    public IActionResult RedirectExample()
    {
        return Redirect("/Index");
    }
}

위의 코드에서 OnGet() 메서드는 PageResult를 반환하여 Razor 페이지를 렌더링하고, RedirectExample() 메서드는 RedirectResult를 반환하여 지정된 URL로 리디렉션합니다.

MVC Application에서 Action Result를 반환하는 것과 비교하여 Razor Page Application에서 OnGet, OnPost 등의 메서드를 사용하는 것은 간단한 페이지 및 API의 경우 간단한 구조로 유지할 수 있으므로 작성 및 유지 보수가 더 쉬울 수 있습니다. 그러나 좀 더 복잡한 애플리케이션에서는 MVC 방식이 유용할 수 있습니다.


반환 유형 전체 보기

MVC Application에서 지원하는 반환 유형

  • ViewResult: 뷰를 렌더링합니다.
  • PartialViewResult: 부분 뷰를 렌더링합니다.
  • RedirectResult: 지정된 URL로 리디렉션합니다.
  • RedirectToRouteResult: 지정된 라우팅 경로로 리디렉션합니다.
  • RedirectToActionResult: 액션 메서드로 리디렉션합니다.
  • JsonResult: JSON 형식의 데이터를 반환합니다.
  • ContentResult: 문자열 콘텐츠를 반환합니다.
  • FileResult: 파일을 다운로드하거나 파일 콘텐츠를 반환합니다.
  • FileStreamResult: 스트림으로부터 파일 콘텐츠를 반환합니다.
  • EmptyResult: 아무 콘텐츠도 반환하지 않습니다.
  • StatusCodeResult: 지정된 HTTP 상태 코드를 반환합니다.
  • BadRequestResult: HTTP 400 Bad Request 상태 코드를 반환합니다.
  • UnauthorizedResult: HTTP 401 Unauthorized 상태 코드를 반환합니다.
  • NotFoundResult: HTTP 404 Not Found 상태 코드를 반환합니다.
  • ObjectResult: 개체를 반환하며, HTTP 상태 코드와 함께 반환됩니다.
  • PartialViewResult: 부분 뷰를 렌더링합니다.

Razor Page Application에서 지원하는 반환 유형

  • PageResult: Razor 페이지를 렌더링합니다.
  • PartialViewResult: 부분 뷰를 렌더링합니다.
  • RedirectResult: 지정된 URL로 리디렉션합니다.
  • RedirectToPageResult: Razor 페이지로 리디렉션합니다.
  • JsonResult: JSON 형식의 데이터를 반환합니다.
  • ContentResult: 문자열 콘텐츠를 반환합니다.
  • FileResult: 파일을 다운로드하거나 파일 콘텐츠를 반환합니다.
  • FileStreamResult: 스트림으로부터 파일 콘텐츠를 반환합니다.
  • EmptyResult: 아무 콘텐츠도 반환하지 않습니다.
  • StatusCodeResult: 지정된 HTTP 상태 코드를 반환합니다.
  • BadRequestResult: HTTP 400 Bad Request 상태 코드를 반환합니다.
  • UnauthorizedResult: HTTP 401 Unauthorized 상태 코드를 반환합니다.
  • NotFoundResult: HTTP 404 Not Found 상태 코드를 반환합니다.
  • ObjectResult: 개체를 반환하며, HTTP 상태 코드와 함께 반환됩니다.
  • PartialViewResult: 부분 뷰를 렌더링합니다.
728x90