RouteMap 기술 - URL 단축하기 + 매개변수 처리
출처2 : https://www.codeproject.com/Articles/77199/URL-Routing-with-ASP-NET
출처3 : (전송 에러시) http://deuxist.tistory.com/526
출처4 : http://blog.danggun.net/1599
ASP.NET Framework 4에 와서 Routing 기술은 더욱 강화되었습니다. IIS 서버 기술 Rewrite에서 벗어나 완전한 Routing 기술을 제공합니다. URL Routing Process는 다음과 같이 동작합니다.
1. 왜 URL Routing을 도입해야 하는가?
첫째로는, 사용자가 기억하기 좋은 어휘로 전환할 수 있습니다.
둘째로는, 주소가 간결해집니다.
셋째로는, 웹 사이트 구조가 가상화됩니다.
(즉, 물리 주소의 노출이 줄어듭니다.)
넷째로는, 해킹 가능한 상태에서 벗어나게 해줍니다.
2. ASP.NET 4.0에서의 URL Routing
ASP.NET 4.0은 우리에게 메커니즘을 라우팅 전체 URL을 처리하는 단순하고 강력한 방법을 제공합니다.
앞에서 설명한 대로, 라우팅 URL을 제공하기 위해 ASP.NET은 이제 수많은 클래스를 갖춘 방법 중 여러 쉽게 물리적 파일과 URL을 단순하게 사용할 수 있도록 기능을 제공합니다. 우리는 Framework 4의 라이브러리를 사용하여 적용할 수 있습니다.
global.asax
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>
<script RunAt="server">
public static void RegisterRoutes(RouteCollection routes)
{
RouteTable.Routes.MapPageRoute("StoreRoute1", "BookStore", "~/default.aspx", false);
RouteTable.Routes.MapPageRoute("StoreRoute2", "BookStore/{name}", "~/default.aspx", false);
RouteTable.Routes.MapPageRoute("StoreRoute3", "BookStore/{name}/{age}", "~/default.aspx", false);
}
void Application_Start(object sender, EventArgs e)
{
// 응용 프로그램이 시작될 때 실행되는 코드입니다.
RegisterRoutes(RouteTable.Routes);
}
void Application_End(object sender, EventArgs e)
{
// 응용 프로그램이 종료될 때 실행되는 코드입니다.
}
void Application_Error(object sender, EventArgs e)
{
// 처리되지 않은 오류가 발생할 때 실행되는 코드입니다.
}
void Session_Start(object sender, EventArgs e)
{
// 새 세션이 시작할 때 실행되는 코드입니다.
}
void Session_End(object sender, EventArgs e)
{
// 세션이 끝날 때 실행되는 코드입니다.
// 참고: Session_End 이벤트는 Web.config 파일에서 sessionstate 모드가
// InProc로 설정되어 있는 경우에만 발생합니다. 세션 모드가 StateServer 또는 SQLServer로
// 설정되어 있는 경우에는 이 이벤트가 발생하지 않습니다.
}
</script>
default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="default.aspx.cs" Inherits="summary" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="sample1" Text="Null" runat="server"></asp:Label><br />
<asp:Label ID="sample2" Text="Null" runat="server"></asp:Label>
<br />
<asp:HyperLink ID="text" runat="server" NavigateUrl="~/Bookstore/Cakeon/aaa" Text="야호"></asp:HyperLink>
</div>
</form>
</body>
</html>
default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string name = Page.RouteData.Values["Name"] as string;
sample1.Text = name;
string age = Page.RouteData.Values["Age"] as string;
sample2.Text = age;
}
}