1

好吧,所以我一直堅持了至少2天,用Google搜索和檢查出所有我能找到的其他堆棧文章。MVC自定義路由和本地化

我只想檢查我的路線中的第一個參數是否爲有效的文化名稱,如果它沒有在執行前修改url/route以包含文化值。

難道是這樣嗎?!我認爲不應該。

我只能修改basecontroller類中的所有其他控制器繼承的東西,並在那裏檢查並修改所有路由數據並將其發送。問題在於我有一些其他的自定義路線。

好的,所以這裏是我的代碼的問題,以及爲什麼我認爲在執行任何控制器之前最容易做到這一點。

routes.MapRoute(
      "Localization", 
      "{lang}/{controller}/{action}", 
      new { lang="en-US",controller="Home",action="Index"} 
      ); 
     routes.MapRoute(
      "Solutions", 
      "{lang}/Solutions/{controller}/{action}", 
      new { lang="en-US", controller = "WhatWeDo", action = "Index"} 
     ); 
     routes.MapRoute(
      "Default", // Route name 
      "{lang}/{controller}/{action}/{id}", // URL with parameters 
      new { lang = "en-US", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

所以,如果我嘗試修改的東西,我碰到這個討厭/解決方案/定製某些解決方案的路線,併爲其他答案它需要一個定製的重定向(得到永久遷移的錯誤),並檢查看看某些參數是否爲空。

有沒有什麼辦法提取路由數據並修改global.asax文件中的路由/ url?這將是最簡單的,我真的想把它放進去,以便它始終在那裏,而且我可以正常路由。

我可能沒有做出太多的感覺,但我有點沮喪。有什麼建議麼?

+0

因此,我決定只保留我的所有路線的lang參數,並且只是咬緊牙關,修改每一個簡單鏈接和動作鏈接,將其包含在routedata中。不過,我想知道是否有人爲此提供解決方案,所以我會放幾天。 – Ryan 2012-01-10 19:50:45

+0

我不太確定問題所在。解釋你想要這個代碼做什麼以及它實際上在做什麼。 – MrBoJangles 2012-01-17 22:34:53

回答

1

我不完全確定你想要達到的目標,是在路線中「執行」語言嗎?

你可以嘗試編寫自己的RouteHandler來處理事情嗎?

我寫了關於我的blog類似的東西。

+0

是的,這是我想要做的。我會給你信貸的答案,因爲這似乎是我想做的。在路線中強化語言將是最好的解決方案,它可能需要你的建議。謝謝。我可能會稍後再實施。 – Ryan 2012-01-20 21:34:54