2013-03-07 5 views
0

우리는 제품 사이트를 구축 중이며 ASP.NET WebForms C#에서 경로를 사용하고 있습니다. 우리는 현재이ASP.NET Webform 라우팅

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx"); 
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 

그것은 작동 큰 ..

신발/여자 신발/어린이, 부츠/남성 부츠/여자.

우리는 다음과 같은 resutls 얻을 희망에 새로운 노선을 추가

제품/산 빛 - 남성 - 하이킹 부츠

그래서 우리는 지금 우리의 라우터는

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx"); 
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 
routes.MapPageRoute("", "Product/{productName}", "~/Product.aspx"); 
있다

그러나 /Product/Mountain-Light-Mens-Hiking-Boots 라우터가 켜질 때 라우터가 켜집니다 SubCategory.aspx, 이는 우리가하고 싶은 것이 아닙니다. Product.aspx을 실행하고 싶습니다.

나는 'Prodcut'이 categoryName인지 여부를 라우터가 알지 못한다는 것을 알고 있습니다.

/제품에 대한 다른 루트 수준 라우팅을 어떻게 추가합니까?

답변

2

routes.MapPageRoute("", "Product/{productName}", "~/Product.aspx"); 
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 
routes.MapPageRoute("", "{categoryName}", "~/Category.aspx"); 

주문처럼 코드 순서를 변경

매우 중요합니다. "www.domain.com/abc/abc"와 같은 URL을 입력했기 때문에

routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 

3 번 항목을 입력하십시오. 이 경로는 결코 호출되지 않았습니다. 그것은 다음과 같은 경로를 호출합니다.

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx"); 

값이됩니다.

string Value= Page.RouteData.Values["categoryName"].ToString(); 
Value= "abc/abc"; 

따라서 하나의 매개 변수를 포함하는 URL 패턴은 및 경로 컬렉션에 있어야합니다.

+0

이것은 효과가 있습니다. - 어떻게 아는거야? :) –