2011-09-08 3 views
0

asp.net 4.0의 라우팅 기능을 사용하여 URL 재 작성에 대한 문제를 해결해야합니다. 사용자 유형의 URL을URL에 대한 구문 분석 문자열 asp.net 4.0

www.mysite.com/product.aspx?id=101

다음 오른쪽 페이지 쇼처럼하지만 난 페이지의 위치와 이름 및 사용자 유형의 URL을 변경 가정 해 봅시다 경우 때 같은

www.mysite.com/product.aspx?id=101

은 다음 페이지를 찾을 수 없습니다 오류가 발생합니다.

그래서이 상황을 asp.net 4.0 라우팅 기능을 사용하여 어떻게 해결할 수 있는지 알려주십시오. 가능합니까?

나는 이런 식의 URL 재 작성을 좋아 라우팅 및 내 샘플 코드

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     RouteTable.Routes.MapPageRoute 
       ("Source", "Source/{ID}/{Title}", "~/Source.aspx"); 
     RouteTable.Routes.MapPageRoute 
       ("Source1", "MyData/Source/{ID}/{Title}", "~/MyData/Source.aspx"); 
    } 

위의 코드는 단지 샘플입니다 및 I 핸들러입니다. 많이 쉽다. 하지만 위의 URL 매핑 문제를 해결해야한다면 어떻게 할 수 있고 어떤 종류의 코드를 Application_Start 이벤트에 써야할까요? 사용자 유형이

다음

www.mysite.com/product.aspx?id=101

www.mysite.com로 리디렉션해야 할 때

내가 원하는 /prod/Myproduct.aspx?prodid=101

이 URL입니다. 그래서 제발 나를 asp.net 4.0 라우팅 기능의 도움으로 이러한 종류의 매핑을 수행 할 수 있는지 안내해주십시오.

답변

2

쿼리 문자열이 포함 된 경로로 라우팅 할 수있는 유일한 방법은 사용자 지정 처리기를 사용하는 것입니다. 기본적으로 라우팅은 RouteData에 변수를 전달합니다.

그래서 세 가지 옵션이 있습니다.

1) RouteData를 가져 와서 쿼리 문자열에 추가하는 경로를 다시 작성하는 사용자 지정 경로 처리기를 작성합니다. this in this question에 대한 몇 가지 코드 유사한 코드를 작성했습니다.

2) 에 QueryString의 제품 id이 있는지 확인하고 MapPageRoute (새 페이지가 원래 쿼리 문자열에 액세스 할 수 있음)을 사용하도록 MyProduct.aspx를 업데이트하십시오.

RouteTable.Routes.MapPageRoute(
        "product", 
        "product.aspx", 
        "~/prod/myproduct.aspx"); 

3) 유 product.aspx/{* prodid는}을 준 ...

<rewrite> 
    <rules> 
     <rule name="product"> 
      <match url="product.aspx?id=([0-9]+)" /> 
      <action type="Rewrite" url="prod/myproduct.aspx?prodid={R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 
+0

감사 IIS7 재 작성 규칙을 사용합니다. 왜 * *의 의미는 무엇입니까. 우리가 사용할 수있는 또 다른 사인을 알려주십시오. –

+0

*에 오류가 발생했습니다. 오류 텍스트는 "catch-all 매개 변수는 라우트 URL의 마지막 세그먼트로만 나타납니다. 매개 변수 이름 : routeUrl "해결 방법을 안내해주세요 . –

+0

죄송합니다. 옵션 2가 잘못되었으므로 다른 시나리오를 생각하고 있습니다 - 업데이트했습니다. *는 마지막 매개 변수를 마지막 매개 변수 다음에 오는 모든 것과 일치시키는 매개 변수를 만듭니다 분절. – TheCodeKing