路由*路径通配符不会接受路径时仅一个斜杠
问题描述:
我有一个通配符路线的问题,我不知道是否有人能帮助,我有一个路线如下路由*路径通配符不会接受路径时仅一个斜杠
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" });
其中控制器采用的路径和名称两个字符串参数,但仍然没有喜悦,有没有人有任何想法或指针,以什么能解决这个问题?谢谢你的帮助。
答
第一个例子应该没问题(除了最后的单数.RouteHandler = new ReportPathRouteHandler();
)。你的控制器动作是什么样的?它是否将“字符串路径”作为参数?
.routehandler是一个接受路径并切入控制器动作的参数的类,也许我应该放弃这一点,只需将完整的*路径传递给控制器,使用路由处理器看起来更整洁,但 – Israfel 2010-03-10 09:00:52
那么会发生什么当你尝试没有路由处理器的时候。它听起来很有用(我会去检查一下),但是当出现问题时我总是尽量保持简单,然后慢慢地增加复杂性。 – Cymen 2010-03-10 16:21:52
被拖入另一个项目中,以便测试并稍后返回给您 – Israfel 2010-03-11 09:16:43