鑑於遵循以下圖案的URL:高級路由行爲與ASP.NET MVC路由
firstcolor = {VALUE1}/secondcolor = {} VALUE2
其中VALUE1和value2可以變化和動作方法像:
ProcessColors(字符串color1,字符串color2)在說一個名爲ColorController的控制器。
我想下面的路線評價:
URL '/ firstcolor =紅',結果就像ProcessColors通話( 「紅」,NULL)
URL「/ secondcolor =像ProcessColors通話blue'results (NULL,「藍」)
URL「firstcolor =紅/ secondcolor =藍色」像ProcessColors通話結束(「紅」,「藍」)現在
從我認爲這是可以用幾個可以實現路線,像這樣的東西
route.MapRoute(null,
"firstcolor={color1}/secondcolor={color2}",
new { controller=ColorController, action = ProcessColors })
route.MapRoute(null,
"firstcolor={color1}}",
new { controller=ColorController, action = ProcessColors, color2 = (string)null })
route.MapRoute(null,
"secondcolor={color2}}",
new { controller=ColorController, action = ProcessColors, color1 = (string)null })
這對於只有2種顏色就足夠了,但是據我所知,如果我們想要有4種顏色並且能夠具有這樣的URL,我們將最終獲得更多的路線:
'/firstcolor =藍/ secondcolor =紅/ thirdcolor =綠色/ fourthcolor =黑」
'/ firstcolor =藍/ thirdcolour =紅色'
'/ thirdcolour =紅/ fourthcolour =黑'
等,即我們需要迎合任何組合,因爲firstcolor將始終在2nd之前,2nd將始終在3rd之前,等等。
忽略我的荒謬例子,有沒有什麼好方法可以處理這種不涉及大量路線和動作方法的情況?
不要這樣做。 =符號是根據URI RFC(http://www.ietf.org/rfc/rfc3986.txt)保留的,除非編碼,否則不應該是查詢之外的合法URI的一部分。正如çağdaş所說,使用查詢,而不是此路徑。 – 2009-10-20 13:10:13