c# - MVC C# 自定义 MvcRouteHandler - 如何?

标签 c# asp.net-mvc mvcroutehandler

有没有人有提供自定义 MvcRouteHandler 的经验?在我的应用程序中,我想实现一个全局化模式,如 http://mydomain/en/abouthttp://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 中“包罗万象”的路由之上,这样“已经全局化”的 URI 就不会落入重定向。

如果您希望某个 URI 模式触发某些不是 Controller 上的操作的内容,则需要创建一个新的路由处理程序。但我认为这不是您在这里要处理的问题。

关于c# - MVC C# 自定义 MvcRouteHandler - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/85470/

相关文章:

c# - makepri.exe 是如何集成到 MSBuild 中的?

c# - 在 C# 中创建 Excel 电子表格 (XLSX) -- 服务器端

asp.net - 我应该如何确保此表中的值对是唯一的?

asp.net - ASP.NET MVC 应用程序中的 “Bad binary signature”

asp.net-mvc - 使用来自不同目录的 ASP.net MVC 路由静态文件,无需 IIS 更改和身份验证

c# - 如何从自定义 MvcRouteHandler 回退到路由表中的下一个

c# - .NET 视频音频聊天

c# - Razor:声明式 HTML 助手

c# - ASP.NET MVC Entity Framework 延迟加载或 ViewModel?

asp.net-mvc - 使用带有 MVC5 属性路由的自定义路由处理程序