有人有提供自定义MvcRouteHandler的经验吗?在我的应用程序中,我希望实现像http://mydomain/en/about或http://mydomain/de/about这样的全球化模式。
至于坚持,我希望在请求到达时立即读取cookie,如果这个cookie中有语言设置,请应用它(例如,到达http://mydomain/的用户将被转移到http://mydomain/en/ )。如果没有cookie,我想获得浏览器支持的第一语言,应用这一语言并将其存储在此cookie中。
我想这不能用mvc在它的初始项目模板中提供的标准路由机制来完成。在一个新闻组中,我得到了查看MvcRouteHandler并实现自己的消息的技巧。但是很难找到一个关于如何做到的样本。
有什么想法吗?
发布于 2008-09-17 17:55:42
我不认为您正在做的事情需要一个自定义的路由处理程序。
对于您的“全球化”URI来说,这是一个常规的MVC路由,它的约束条件是"locale“参数必须等于"en”、"de“等。该约束将阻止非全球化URI匹配路由。
对于“非全球化”URI,创建一个“所有捕获”路由,该路由简单地重定向到默认的或cookie设置的地区URI。
将“全球化”路由置于Global.asax中的“所有捕获”路由之上,这样“已经全球化”的URI就不会落入重定向的轨道。
如果您希望某个URI模式触发控制器上的非操作,则需要创建一个新的路由处理程序。但我不认为这就是你要面对的,这里。
发布于 2008-09-17 17:49:04
您应该能够使用ASP.NET MVC的默认模板来实现这一点,我正在做类似的事情。只需将路由构建为{language}/{控制器}/{action}/{id}
只需设置一个默认路径,该路由将发送到一个控制器,该控制器检查语言cookie,并根据该cookie重定向用户。
https://stackoverflow.com/questions/85470
复制相似问题