2015-08-27 54 views
0

我需要生成以下路徑 /products/tires/all/all/all-all-Rall?page = 2 & ItemsPerPage = 50 我做什麼個解決這個問題:mvc MapRoute:如何生成帶有分段(斜線)和變量的路徑(傳遞後?)

routes.MapRoute("Tyres", "products/tyres/{ProducerId}/{SeasonId}/{Width}-{Height}-R{Diametr}", 
     new { controller = "Products", action = "Tyres", ProducerId = "all", SeasonId = "all", Width = "all", Height = "all", Diametr = "all", page = UrlParameter.Optional, ItemsPerPage = UrlParameter.Optional }); 

當我寫@Url.Action("Tyres","Products", new { ProducerId = "5", Height="55" }),路線是正確的/產品/輪胎/ 5 /所有/全部55曼仕龍

但是,當我添加頁面參數:?,在不產生段的路線:/產品/輪胎ProducerId = 5 &高度= 55 &頁= 10

如何解決這個?

+0

您是否嘗試通過定義所需的所有額外參數來定義可處理此特定請求的額外路由?還要確保你需要的額外參數用「/」而不是「 - 」分開。 –

+0

我沒有「 - 」的問題。你明白我的問題嗎?我需要生成一個包含細分的路線:/ products/tires ... AND參數:page = 2&ItemsPerPage = 50。我不知道該怎麼做。 Pease寫具體的例子。 –

回答

0

如果我正確理解你的問題,如果你想看到的URL格式爲:

/products/tyres/5/all/all-55-Rall?page=2&ItemsPerPage=6 

,然後與路徑模板從您發佈的模板不包括可選參數嘗試

 routes.MapRoute("Tyres", "products/tyres/{ProducerId}/{SeasonId}/{Width}-{Height}-R{Diametr}", 
           new 
           { 
            controller = "products", 
            action = "Tyres", 
            ProducerId = "all", 
            SeasonId = "all", 
            Width = "all", 
            Height = "all", 
            Diametr = "all" 
//Notice here, i have excluded the Optional URL parameters from your template: 
//page = UrlParameter.Optional, ItemsPerPage = UrlParameter.Optional 
           } 
          ); 

隨着規定,如果同時呼籲未提供他們,那麼URL將是無效的可選參數:

/products/tyres/5/all/all-55-Rall//ItemsPerPage=6 //Notice here page value is not provided 

,所以它可能使用查詢字符串方法來處理這個問題。

希望這可以幫助你。

相關問題