好吧,所以我一直坚持了至少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