2012-04-09 34 views
0

如何找到与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任何匹配这些路由然后我们会重定向到它,否则我们会重定向到指定的默认网址。

+0

我认为这个问题涉及它http://stackoverflow.com/questions/3545432/how-to-get-routedata-通过-URL。我试图做同样的事情,这个答案解决了我的问题 – GraemeMiller 2014-07-30 14:55:00

回答

3

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

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

+0

感谢亚当 - 那就是诀窍。我想也许我可以避免嘲弄/嘲弄http上下文,但它似乎足够干净。我已经在https://gist.github.com/2346138 :)发布了我目前的hacky /测试不佳的代码 – 2012-04-09 19:53:29

+0

您确实有当前httpcontext的引用,如果您使用它,会发生什么 - 即什么阻止您使用它? – 2012-04-10 22:28:45

+0

嗨,亚当。如果我使用当前的HttpContext,那么'HttpContext.Request.Url'(只读)被设置为当前页面。我需要为**之前的**网页(我正在检查的那个)构建一个HttpContext,以查看它是否与特定路线匹配。那有意义吗? – 2012-04-11 12:02:04