【问题标题】:How to find the route that matches a url?如何找到与 url 匹配的路由?
【发布时间】:2012-04-09 18:43:20
【问题描述】:

如何在 ASP.NET MVC 中找到匹配字符串 url 的路由?

这不是为了调试。

我正在使用Request.UrlReferrer 生成链接,但我们需要将其限制为应用程序中的特定控制器操作。理想情况下,我们会这样:

@Url.PreviousUrl(
    default: Url.Action("index", "home")
    validRoutes: new[] { 
        new { controller = "list", "projects" }
        new { controller = "tagged", "projects" },
        new { controller = "details", "category" }
    }
);

如果UrlReferrer 匹配任何这些路由,那么我们将重定向到它,否则我们将重定向到指定的默认 url。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

您可以按如下方式调用 GetRouteData。可能有更好的方法,但我在单元测试中使用过类似的方法

http://bradwilson.typepad.com/blog/2010/07/testing-routing-and-url-generation-in-aspnet-mvc.html

【讨论】:

  • 感谢 Adam - 成功了。我想也许我可以避免存根/模拟 http 上下文,但它看起来很干净。我已经在gist.github.com/2346138 上发布了我目前 hacky/测试不佳的代码 :)
  • 你确实有一个对当前 httpcontext 的引用,如果你使用它会发生什么 - 即是什么阻止你使用它?
  • 嗨,亚当。如果我使用当前的 HttpContext,则“HttpContext.Request.Url”(只读)设置为当前页面。我需要为 previous 页面 url(我正在检查的那个)构建一个 HttpContext 以查看它是否与特定路由匹配。这有意义吗?
  • 啊,你确实说明了推荐人:)
  • 考虑使用您链接的帖子中的详细信息更新此答案,而不仅仅是重定向。当链接断开时,仅包含链接的答案可能会在以后失效。
猜你喜欢
  • 2019-02-22
  • 1970-01-01
  • 2020-04-25
  • 2021-01-21
  • 1970-01-01
  • 2020-11-11
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多