4

有没有人有提供自定义 MvcRouteHandler 的经验?在我的应用程序中,我想实现一个像http://mydomain/en/abouthttp://mydomain/de/about这样的全球化模式。

至于持久性,我希望在请求到达后立即读取 cookie,如果此 cookie 中有语言设置,请应用它(因此到达http://mydomain/的用户将被转移到http:// /mydomain/en/例如)。如果没有 cookie,我想获得浏览器支持的第一种语言,应用这个并将其存储在这个 cookie 中。

我想这不能用 mvc 在它的初始项目模板中提供的标准路由机制来完成。在新闻组中,我得到了查看 MvcRouteHandler 并实现我自己的提示。但是很难找到如何做到这一点的样本。

有任何想法吗?

4

2 回答 2

2

我不相信您正在做的事情需要自定义路由处理程序。

对于您的“全球化”URI,一个常规的 MVC 路由,具有“locale”参数必须等于“en”、“de”等的约束,就可以了。该约束将阻止非全球化 URI 匹配路由。

对于“非全球化”URI,创建一个“包罗万象”的路由,它只会重定向到默认或 cookie 设置的区域设置 URI。

将“全球化”路由放在 Global.asax 中的“catch-all”路由之上,这样“已经全球化”的 URI 就不会被重定向。

如果您希望某个 URI 模式触发不是控制器上的操作的东西,则需要创建一个新的路由处理程序。但我不认为这就是你要处理的,在这里。

于 2008-09-17T17:55:42.143 回答
0

您应该可以使用 ASP.NET MVC 的默认模板来做到这一点,我正在做类似的事情。只需将您的路线构建为 {language}/{controller}/{action}/{id}

只需设置一个默认路由,该路由将转到检查语言 cookie 的控制器,并根据该 cookie 重定向用户。

于 2008-09-17T17:49:04.793 回答