路由*当只有一个斜杠时,路径通配符不会接受路径

时间:2010-03-09 17:27:04

标签: asp.net-mvc routing url-routing

我对通配符路线有疑问,我想知道是否有人可以提供帮助,我的路线如下

routes.MapRoute(
            "ReportRoute", 
            "Report/{*path}", 
            new { controller = "Home", action = "Index"})
            .RouteHandler = new ReportPathRouteHandler();

路由处理程序将路径拆分为正确的部分以获取正确的报告,如果我放入路径 www.mysite.com/report/folder1/folder2/report 那么这很有效我会得到我正在寻找的东西但是我的问题是如果我有一个像 www.mysite.com/report/folder1/report 这样的链接,*路径只有 folder1 / report 并且路由确实不喜欢这个,实际上它甚至没有命中我的路由处理程序,只是直接找到'资源无法找到'服务器错误页面。我试图通过在通配符之前添加新路由来解决这个问题,如下所示

routes.MapRoute(
            "ReportRoute2",
            "Report/{path}/{name}",
            new { controller = "Home", action = "Index" });

其中Controller将Path和Name作为两个字符串参数但仍然没有乐趣,有没有人有任何想法或指针可以解决这个问题?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

第一个例子应该没​​问题(除了最后的奇数.RouteHandler = new ReportPathRouteHandler();)。你的控制器动作是什么样的?是否需要“字符串路径”作为参数?