好吧,所以我一直堅持了至少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?這將是最簡單的,我真的想把它放進去,以便它始終在那裏,而且我可以正常路由。
我可能沒有做出太多的感覺,但我有點沮喪。有什麼建議麼?
因此,我決定只保留我的所有路線的lang參數,並且只是咬緊牙關,修改每一個簡單鏈接和動作鏈接,將其包含在routedata中。不過,我想知道是否有人爲此提供解決方案,所以我會放幾天。 – Ryan 2012-01-10 19:50:45
我不太確定問題所在。解釋你想要這個代碼做什麼以及它實際上在做什麼。 – MrBoJangles 2012-01-17 22:34:53