2011-12-26 94 views
0

我有一個網站,網址看起來像這樣;無法獲得MVC路由工作

Home/LocationPage?locationId=f25a9ba4-54dc-4e6a-bdbf-094a5a6f7801 

我想它看起來就像是;

Home/My Restaurant 

我試過映射這樣的路線;

 routes.MapRoute(
      "Location", 
      "{Controller}/{LocationName}", 
      new { controller = "Home", action = "LocationPage", LocationName = "" } 

,但似乎無法得到URL做任何改動。

+0

路由不會更改URL;它添加了URL。你想要重定向嗎? – SLaks 2011-12-26 03:37:29

+0

不,我想要的網址反映了一個自定義路徑 – griegs 2011-12-26 03:38:47

+0

那麼當你去'家/我的餐廳'會發生什麼?有什麼確切的問題? – SLaks 2011-12-26 03:39:44

回答

0

保留剛製作的路線,但您可能需要添加更多的東西。

在數據庫中查找LocationName路徑參數並添加路徑約束(或覆蓋控制器上的OnActionExecuting方法或添加一個屬性到action方法),並(如果找到)向路由添加locationId參數參數。然後創建一個名爲LocationPage的操作,它需要一個locationId(位置名稱是可選的)。

通過這種方式,您可以獲得不錯的網址,但操作無需執行查找。

0

如果您收到一個名爲您Action,那麼你需要改變你的路線LocationId參數:

routes.MapRoute(
      "Location", 
      "{Controller}/{LocationId}", 
      new { controller = "Home", action = "LocationPage", LocationId = "" } 

而且不要忘了,這樣你就不會得到這個參數設置爲Guid那麼你應該使您的邏輯檢索提供的名稱Guid值。