사용자 지정 경로 만들기(C#)
ASP.NET MVC 애플리케이션에 사용자 지정 경로를 추가하는 방법을 알아봅니다. 이 자습서에서는 Global.asax 파일에서 기본 경로 테이블을 수정하는 방법을 알아봅니다.
이 자습서에서는 ASP.NET MVC 애플리케이션에 사용자 지정 경로를 추가하는 방법을 알아봅니다. 사용자 지정 경로를 사용하여 Global.asax 파일의 기본 경로 테이블을 수정하는 방법을 알아봅니다.
많은 간단한 ASP.NET MVC 애플리케이션의 경우 기본 경로 테이블이 제대로 작동합니다. 그러나 특수한 라우팅 요구 사항이 있음을 발견할 수 있습니다. 이 경우 사용자 지정 경로를 만들 수 있습니다.
예를 들어 블로그 애플리케이션을 빌드한다고 상상해 보세요. 다음과 같은 들어오는 요청을 처리할 수 있습니다.
/Archive/12-25-2009
사용자가 이 요청을 입력하면 2009년 12월 25일 날짜에 해당하는 블로그 항목을 반환하려고 합니다. 이러한 유형의 요청을 처리하려면 사용자 지정 경로를 만들어야 합니다.
목록 1의 Global.asax 파일에는 /Archive/entry 날짜와 같은 요청을 처리하는 Blog라는 새 사용자 지정 경로가 포함되어 있습니다.
목록 1 - Global.asax(사용자 지정 경로 포함)
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Blog", // Route name
"Archive/{entryDate}", // URL with parameters
new { controller = "Archive", action = "Entry" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
경로 테이블에 추가하는 경로의 순서가 중요합니다. 새 사용자 지정 블로그 경로가 기존 기본 경로 앞에 추가됩니다. 순서를 취소한 경우 기본 경로는 항상 사용자 지정 경로 대신 호출됩니다.
사용자 지정 블로그 경로는 /Archive/로 시작하는 모든 요청과 일치합니다. 따라서 다음 모든 URL과 일치합니다.
/Archive/12-25-2009
/Archive/10-6-2004
/Archive/apple
사용자 지정 경로는 들어오는 요청을 Archive라는 컨트롤러에 매핑하고 Entry() 작업을 호출합니다. Entry() 메서드가 호출되면 항목 날짜가 entryDate라는 매개 변수로 전달됩니다.
목록 2에서 컨트롤러와 함께 블로그 사용자 지정 경로를 사용할 수 있습니다.
목록 2 - ArchiveController.cs
using System;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
public class ArchiveController : Controller
{
public string Entry(DateTime entryDate)
{
return "You requested the entry from " + entryDate.ToString();
}
}
}
목록 2의 Entry() 메서드는 DateTime 형식의 매개 변수를 허용합니다. MVC 프레임워크는 URL에서 DateTime 값으로 입력 날짜를 자동으로 변환할 수 있을 만큼 스마트합니다. URL의 항목 날짜 매개 변수를 DateTime으로 변환할 수 없는 경우 오류가 발생합니다(그림 1 참조).
그림 1 - 매개 변수 변환 오류
그림 01: 매개 변수 변환 오류(전체 크기 이미지를 보려면 클릭)
요약
이 자습서의 목표는 사용자 지정 경로를 만드는 방법을 보여 주는 것이었습니다. 블로그 항목을 나타내는 Global.asax 파일의 경로 테이블에 사용자 지정 경로를 추가하는 방법을 알아보았습니다. 블로그 항목에 대한 요청을 ArchiveController라는 컨트롤러 및 Entry()이라는 컨트롤러 작업에 매핑하는 방법을 설명했습니다.