MVC C#自定义MvcRouteHandler – 如何?

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

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

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

有任何想法吗?

最佳答案 我不相信你正在做的事情需要自定义路由处理程序.

对于“全球化”URI,常规MVC路由具有“locale”参数必须等于“en”,“de”等的约束.约束将阻止非全球化URI匹配路由.

对于“非全局化”URI,创建一个“全包”路由,它只是重定向到默认或cookie设置的语言环境URI.

将“全局化”路由放在Global.asax中的“catch-all”路由之上,以便“已经全球化”的URI不会落入重定向.

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

点赞