2010-08-07 90 views
1

我在路由配置文件中設置了以下路由。我有一個配置讀者將它們映射到MVC風格的路線。MVC路由:在路由開始處添加可選參數

[route name="customers" url="customers/{statename}/{marketname}/{pagenumber}"] [controller name="Customers" action="Display" /] [/route]

[route name="pcustomers" url="{customername}/customers/{statename}/{marketname}/{pagenumber}"] 
    [controller name="Customers" action="Display" /] 
[/route] 

正如你所知道的,第一和第二條路線是幾乎相同的,但在第二個的{客戶名稱}部分。

第一個匹配的URL等 www.abc.com/customers/TX/Austin/5

其中作爲第二之一匹配的URL等 www.abc.com/CustomerX/customers/德克薩斯州/奧斯汀/ 5

我的問題是,有沒有辦法將這兩條路線合併爲一個,仍然能夠匹配這兩個網址?

回答

2

您可以使用子域名並將第二個URL更改爲customerx.abc.com/customers/tx/Austin/5?作爲一個可選參數,如何將customerx藥水添加到最終? abc.com/customers/tx/Austin/5?customer=x

+0

就完全沒有越過我的腦海裏的想法之一。唉,我不能這樣做。我們有一個使用Webforms的現有網站,所有的網址都已經投入生產。我們正在以零碎的方式將此應用程序遷移到MVC。所以,我們必須保持相同的URL方案:( – Praveen 2010-08-08 05:52:49

+1

在這種情況下,可能會永久重定向,如此處所述將是一個解決方案(http://haacked.com/archive/2008/12/15/redirect-routes-and-其他有趣的路由和lambdas.aspx) – Tahbaza 2010-08-08 12:25:49

1

我就做了這樣的路線:

customers/{statename}/{marketname}/{customer} 

,做頁面編號作爲查詢字符串。 這樣的網址是:

www.abc.com/customers/tx/Austin?pagenumber=1 

www.abc.com/customers/tx/Austin/CustomerX 

URL的建設也很可能跟隨現場藏漢的usagepattern:

  1. 單擊客戶
  2. 選擇一個州
  3. 選擇一個市場名稱
  4. 瀏覽網頁
  5. 點擊客戶
+0

不幸的是,我不能去與一個不同的URL方案。我們必須堅持我們現有的方案向後兼容性以及SEO。 – Praveen 2010-08-09 18:46:49

+0

@Praveen - 你有可能解決了這個問題,但爲什麼你不能301重定向到新的URL方案? – Moo 2012-01-04 11:21:23