2012-01-26 4 views
0

안녕 내가 등록한 경로 : -ASP.NET MVC 3.0 URL 라우팅 문제

routes.MapLocalizedRoute("Category", 
         "{SeName}-c{categoryId}", 
         new { controller = "Catalog", action = "Category", SeName =  UrlParameter.Optional }, 
         new { categoryId = @"\d+", SeName = @"([-\w+]+(/[-\w+]+)*)+" }, 
         new[] { "Nop.Web.Controllers" }); 

routes.MapLocalizedRoute("CategoryWithManufacture", 
        "{SeName}-d{categoryId}/{ManufactureName}/{Color}", 
        new { controller = "Catalog", action = "Category", SeName = UrlParameter.Optional, Color = UrlParameter.Optional }, 
        new { categoryId = @"\d+", SeName = @"([-\w+]+(/[-\w+]+)*)+", ManufactureName = @"([-\w+]+(/[-\w+]+)*)+", Color = @"([-\w+]+(/[-\w+]+)*)+" }, 
        new[] { "Nop.Web.Controllers" }); 

우리는 아래와 같이 다음을 생성 : -

href="@Url.RouteUrl("CategoryWithManufacture", new { categoryId = currentCategoryId, SeName = seName, ManufactureName = manufacturerFilterItem.Name, Color = color })" 


href="@Url.RouteUrl("Category", new { categoryId = currentCategoryId, SeName = seName})" 

직접에 값을 할당하는 방법이있다 두 번째 매개 변수는 "ManufactureName"에 값을 지정하지 않고 "Color"입니다.

/gloves-d18/red (second parameter) 
/gloves-d18/hp/red (first and second both) 

내가 manufactureName & 색상 옵션을 모두하여 이러한 시도 (CategoryWithManufacture 경로를 사용)하지만 우리는하지 둘째를 첫 번째 매개 변수에 값을 할당 할 때, 그것은 작동 - : 의미한다. 그러나 우리는 먼저 두 번째 매개 변수에 값을 할당합니다. 그런 다음 작동하지 않습니다.

유용한 링크 나 샘플 코드를 제안 해주세요.

답변

1

마지막 매개 변수 만 경로 정의에서 선택 사항 일 수 있습니다. /gloves-d18/red URL이 주어지면 red{Color}을 말하며 {ManufactureName}이 아님을 알 수 있습니다. 이 작업을 수행하는 유일한 방법은이 두 부분에 대한 제약 사항을 작성하는 것입니다. 지금은 둘 다 똑같은 정규 표현식 제약 조건을 가지고 있습니다.

+0

제 경로에서 수정을 제안하십시오. –