2011-01-11 63 views
1

我正在尋找一種方法來正確路由包含'#'符號的網址。對於這樣的網址,我基本上想忽略#。MVC2:需要路由包含#符號的網址

例如,我希望Stores/Index /#/ {storeName}路由到Store控制器的Index操作,並傳遞一個參數(storeName)。

我嘗試過匹配字符串中的'#',但這不起作用。 (該行動被稱爲但是STORENAME參數不通過)

routes.MapRoute("RemoveHash", "Store/Index/#/{storeName}", 
      new {controller = "Store", action = "Index", storeName = UrlParameter.Optional}); 

我也曾嘗試有2個參數的動作(第一個是#),以爲我可以忽略#如果它獲得通過(哈克我知道)...但在這種情況下路由出現問題,並且這兩個參數都不傳遞給動作。

我想避免使用HttpHandler來完成這項任務,如果我可以使用MVC路由系統來處理這個問題,那將是理想的選擇。

有什麼建議嗎?

回答

3

你試圖做的事情是不可能的。當瀏覽器向服務器發送請求時,瀏覽器中#(散列)符號後面的所有內容都會被忽略,所以ASP.NET MVC應用程序永遠無法獲得該值。只有客戶端JavaScript可以讀取此值(使用window.location.hash),並可以使用AJAX請求和普通URL(例如:Store/Index/{storeName})將其傳遞到服務器。

+0

感謝您的回覆。我會告訴JavaScript的人,他們想要的是不可能的! – nixon 2011-01-11 18:53:31