2010-04-24 2 views
12

Web Forms에서 ASP.NET 4.0 라우팅을 사용하여 일종의 와일드 카드 역할을하는 경로를 생성 할 때 간단한 방법이 있습니까?asp.net 4.0 웹 양식 라우팅 - 기본/와일드 카드 경로

WebForms 내에서 모든 페이지에 대한 경로를 지정해야합니다. 특정 경로가 필요하지 않은 곳에서 사용할 수있는 일종의 일반적인 경로를 찾고 있습니다. 경로에서 경로로 직접 매핑하는 것이 좋습니다. ..

http://somedomain.com/folder1/folder2/page 가능성/Folder2 폴더/page.aspx

어떤 제안을 FOLDER1에 매핑 할 ?

감사

답변

22

당신은이 같은 남아있는 모든 경로를 일치시킬 수 있습니다 :이 경우

routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx"); 

, 우리는 모든 경로를 알고, 그리고 "실종"/ 404 페이지에 무엇을 보낼. 와일드 카드이고 모든 것을 잡을 것이므로 마지막 경로로 지정해야합니다.

는 또는 당신의 경로 같은 방법으로 등록 할 수 있지만, 내부적으로 다음과 같이 페이지에 매핑을 수행합니다

public class DefaultRouteHandler : IRouteHandler 
{ 
    public IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
    //Url mapping however you want here: 
    var pageUrl = requestContext.RouteData.Route.Url + ".aspx"; 

    var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl, typeof(Page)) 
       as IHttpHandler; 
    if (page != null) 
    { 
     //Set the <form>'s postback url to the route 
     var webForm = page as Page; 
     if (webForm != null) 
     webForm.Load += delegate { webForm.Form.Action = 
            requestContext.HttpContext.Request.RawUrl; }; 
    } 
    return page; 
    } 
} 
: 핸들러 클래스는, 이런 식으로 뭔가를 와일드 카드 매핑을 할 것

routes.Add(new Route("{*value}", new DefaultRouteHandler())); 

그건

이것은 수평 스크롤을 방지하기 위해 이상한 장소에서 약간 부러졌지만 전반적인 포인트를 얻습니다. 다시 경로인지 확인하십시오. 그렇지 않으면 모두 경로를 처리합니다.

+0

다음과 같은 작업을 수행 할 수 있습니까? Dim prospect As String = Page.RouteData.Values ​​("* value") 와일드 카드가 아닌데 와일드 카드는 어떨까요? – davemackey

+1

다음 오류가 발생합니다. 내가 뭘 놓치고 있니? (.Net 4.5) System.Web.Routing.RouteBase ''Url '에 대한 정의가없고'System.Web.Routing.RouteBase '형식의 첫 번째 인수를 허용하는 확장 메서드가 없습니다. using 지시문이나 어셈블리 참조가 누락 되었습니까?) – HGMamaci

0

또한 - 당신이 당신의 웹 응용 프로그램에서 유효성 검사 컨트롤이있는 경우 Global.asax 파일에 .axd 파일에 대한 예외를 추가 할 필요가 유의 사항 :

http://basgun.wordpress.com/2010/10/25/getting-syntax-error-in-asp-net-routing-due-to-webresource-axd/

그렇지 않으면 것 라우팅에서 .axd 파일을 선택하고 유효성 검사 컨트롤에 필요한 JavaScript 파일을 제대로로드하지 않기 때문에 구문 오류가 계속 발생합니다.

+0

링크가 비공개이거나 블로그가 비공개입니다. – GoldBishop