【发布时间】:2013-09-07 01:00:31
【问题描述】:
我正在尝试在 MVC 应用程序中设置路由,以便可选语言“文件夹”位于顶层。
例如
site.com/jp/complexroute
... 是使用 complexroute 找到的页面的日文版
site.com/complexroute
...是使用complexroute找到的页面的英文版
我可以想到一种我认为可行的方法,即获取 RouteConfig.RegisterRoutes 中的整个路由映射列表,并制作第二组相同但具有仅限于已知语言设置的语言参数.这听起来对于编写和维护来说都是一件令人头疼的事情。
我尝试编写自定义 MvcHandler 并将其附加到路由。这让我可以提取部分请求并将其放入 RequestContext.RouteData 但是到调用它时,似乎已经选择了路由/控制器?
我想我希望在收到请求和选择路由之间发生一些事情,我可以在其中操作 url 并在对 RouteCollection 进行查找之前在 RequestContext.RouteData 中设置一个值。
这可能吗?
【问题讨论】:
-
不确定您是否能够使用您建议的方法实现解决方案,因为
RequestContext.RouteData在路由之后或可能在路由期间才可用。当需要后面的参数时,我不相信有一种简单的方法可以在中间创建带有可选参数的路由。即使在英文版本的情况下,始终存在参数可能更容易。
标签: c# .net asp.net-mvc asp.net-mvc-4 routes