2010-03-09 79 views
1

我有一個通配符路線的問題,我不知道是否有人能幫助,我有一個路線如下路由*路徑通配符不會接受路徑時僅一個斜槓

routes.MapRoute(
      "ReportRoute", 
      "Report/{*path}", 
      new { controller = "Home", action = "Index"}) 
      .RouteHandler = new ReportPathRouteHandler(); 

其中routehandler拆分路徑到正確的部分得到正確的報告,這個工程很好,如果我把路線www.mysite.com/report/folder1/folder2/report然後我會得到我在找什麼,但我的問題是如果我有一個鏈接,如www.mysite.com/report/folder1/report,*路徑只有文件夾1 /報告和路由確實沒有'就像這樣,事實上它甚至不會打我的路由處理器,只是直接找到'資源無法找到'的服務器錯誤頁面。我試圖通過通配符之前增加一個新的路線如下來解決這個問題

routes.MapRoute(
      "ReportRoute2", 
      "Report/{path}/{name}", 
      new { controller = "Home", action = "Index" }); 

其中控制器採用的路徑和名稱兩個字符串參數,但仍然沒有喜悅,有沒有人有任何想法或指針,以什麼能解決這個問題?謝謝你的幫助。

回答

0

第一個例子應該沒​​問題(除了最後的單數.RouteHandler = new ReportPathRouteHandler();)。你的控制器動作是什麼樣的?它是否將「字符串路徑」作爲參數?

+0

.routehandler是一個接受路徑並切入控制器動作的參數的類,也許我應該放棄這一點,只需將完整的*路徑傳遞給控制器​​,使用路由處理器看起來更整潔,但 – Israfel 2010-03-10 09:00:52

+0

那麼會發生什麼當你嘗試沒有路由處理器的時候。它聽起來很有用(我會去檢查一下),但是當出現問題時我總是儘量保持簡單,然後慢慢地增加複雜性。 – Cymen 2010-03-10 16:21:52

+0

被拖入另一個項目中,以便測試並稍後返回給您 – Israfel 2010-03-11 09:16:43