【问题标题】:Routing *Path wildcard will not accept Path when only one slash路由 *当只有一个斜杠时,路径通配符将不接受路径
【发布时间】:2010-03-09 17:27:04
【问题描述】:

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

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 这样的链接,*path 只是 folder1/report 并且路由真的不喜欢这样,事实上它甚至没有命中我的路由处理程序,只是直接进入“找不到资源”服务器错误页面。我试图通过在通配符之前添加一条新路线来解决这个问题,如下所示

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

控制器将路径和名称作为两个字符串参数但仍然没有乐趣,有没有人有任何想法或指针来解决这个问题?感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • .routehandler 是一个类,它接受路径并切入控制器操作的参数,也许我应该放弃这一点,只需将完整的 *path 传递给控制器​​,使用 routehandler 似乎更整洁虽然
    • 那么当你在没有路由处理程序的情况下尝试它会发生什么。听起来确实很有用(我会去看看),但是当出现问题时我总是尽量保持简单,然后慢慢增加复杂性。
    • 已被拖入另一个项目,因此将对其进行测试并稍后回复您
    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2017-07-13
    相关资源
    最近更新 更多