2010-03-09 81 views
1

我有一个通配符路线的问题,我不知道是否有人能帮助,我有一个路线如下路由*路径通配符不会接受路径时仅一个斜杠

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

其中routehandler拆分路径到正确的部分得到正确的报告,这个工程很好,如果我把路线www.mysite.com/report/folder1/folder2/report然后我会得到我在找什么,但我的问题是如果我有一个链接,如www.mysite.com/report/folder1/report,*路径只有文件夹1 /报告和路由确实没有'就像这样,事实上它甚至不会打我的路由处理器,只是直接找到'资源无法找到'的服务器错误页面。我试图通过通配符之前增加一个新的路线如下来解决这个问题

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

其中控制器采用的路径和名称两个字符串参数,但仍然没有喜悦,有没有人有任何想法或指针,以什么能解决这个问题?谢谢你的帮助。

回答

0

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

+0

.routehandler是一个接受路径并切入控制器动作的参数的类,也许我应该放弃这一点,只需将完整的*路径传递给控制器​​,使用路由处理器看起来更整洁,但 – Israfel 2010-03-10 09:00:52

+0

那么会发生什么当你尝试没有路由处理器的时候。它听起来很有用(我会去检查一下),但是当出现问题时我总是尽量保持简单,然后慢慢地增加复杂性。 – Cymen 2010-03-10 16:21:52

+0

被拖入另一个项目中,以便测试并稍后返回给您 – Israfel 2010-03-11 09:16:43