我从迁移ASP.NET MVC 1到ASP.NET MVC 2网站目前,该网站支持以下路线:ASP.NET MVC 2 - 做UrlParameter.Optional条目必须在路由的末尾?
/{country}/{language}/{controller}/{action}
/{country}/{controller}/{action}
/{language}/{controller}/{action}
/{controller}/{action}
为country
和language
是区分由正则表达式和所拥有的格式适当的限制。在MVC 1中,我将其中的每一个注册为一个单独的路由 - 对于大约20个组合中的每一个。在MVC 2中,我一直试图通过UrlParameter.Optional
使用UrlParameter.Optional
来解决所有四种情况,但我似乎无法使其工作 - 如果我将country
和language
定义为可选,则路由例如,/Home/Index
未成功匹配路线。这就是我要做的:
routes.MapRoute("Default",
"{country}/{language}/{controller}/{action}",
new { country = UrlParameter.Optional, language = UrlParameter.Optional,
controller = "Home", action = "Index" },
new { country = COUNTRY_REGEX, language = LANGUAGE_REGEX });
这只是不可能的,因为我的自选是在路线的开始,还是我只是失去了一些东西?我找不到任何文件,要么告诉我我正在做什么是不可能的,要么指向正确的方向。
如果可以实现这样的路由系统,我也很感兴趣...... – 2010-06-10 13:47:38
而不是将它们全部集中在一起,为什么不定义多个路由来处理呢? – 2010-06-10 14:06:55
如果您阅读了问题的中间部分,那就是我目前正在做的事情。但在四个组合时间20种不同类型的路线,这是很多映射。我试图找出是否可以使用UrlParameter.Optional来简化此操作。 – 2010-06-10 14:13:19