在ASP.NET MVC中替换路由解析程序

时间:2012-10-06 19:07:36

标签: c# asp.net-mvc

所以我的MVC应用程序收到刚刚浏览过的用户的请求。 /home/about。它检查RouteTable是否匹配模式,并将其分派给正确的Controller和Action。大。

如果我想接管这个功能怎么办?我不想重写URL,我不想在过滤器上下文中混淆RouteData属性或类似的东西。我想接管路由X被我的MVC应用程序转换为控制器Y和动作Z的部分。类似于MyRouteResolver : IRouteResolver(如果确实存在的话)。

我一直在MSDN上挖掘,但我找不到任何暗示这是怎么做的。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以编写一个有效执行相同操作的http处理程序/模块,查看System.Web.Routing.UrlRoutingHandler以了解它们是如何执行此操作的。

然而,一个问题是,MVC中的所有调用以查找路由的URL都不起作用(例如UrlHelper),它们都是硬编码以获取静态路由集合。您可以填写该路由集以使其正常工作,但之后我不确定您从拥有自己的路由处理程序获得了什么。

当前的路由处理程序非常灵活,您可以编写自己的路由类(请参阅RouteBase),而不是替换整个处理程序。