如何在RouteTable MVC.Net中手动查找路由?

ctr*_*yan 5 asp.net-mvc asp.net-mvc-routing

我在我的一个控制器的动作中有一个String,代表一个引用URL.当前请求的路由数据不是我正在寻找的(因为它是从另一个视图中的脚本标记调用的).

我想找到引用Url的Action和Controller.

我有什么方法可以手动使用像"/ Product/23"这样的字符串来查找控制器并将字符串作为url生成的操作?

Sco*_*ott 8

几周前我写了一篇关于做这件事的博客:

从URL创建RouteData实例


小智 4

如果您只想使用 MVC 方法,我可以使用它。

            Uri returnUri = new Uri(returnUrl, UriKind.RelativeOrAbsolute);
            if (!returnUri.IsAbsoluteUri)
            {
                returnUri = new Uri("http://localhost" + returnUrl); // localhost used just to get absolute URL
            }
            HttpContextWrapper httpContext = new HttpContextWrapper(
                new HttpContext(new HttpRequest(String.Empty, returnUri.AbsoluteUri, String.Empty), new HttpResponse(TextWriter.Null))
                );
            RouteData routeData = RouteTable.Routes.GetRouteData(httpContext);
Run Code Online (Sandbox Code Playgroud)