2012-01-26 361 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})" 

有指定值直接的方式第二個參數「Color」,沒有賦值給「ManufactureName」。是指: - (使用CategoryWithManufacture路線)

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

我已讓manufactureName &顏色都爲選購嘗試了這些,但是當我們將值分配給沒有第二個它的第一個參數,它的工作。但是,我們不是第一個賦值給第二個參數,那麼它不起作用。

請建議我使用可用的鏈接或示例代碼。

回答

1

只有最後一個參數在路徑定義中可以是可選的。給定以下url /gloves-d18/red路由引擎不可能知道red這裏指的是{Color}而不是{ManufactureName}。做這項工作的唯一方法就是爲這兩部分寫一些約束。現在他們都有完全相同的正則表達式約束。

+0

請在我的路線中對我進行任何修改。 –