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

时间:2011-02-09 18:29:40

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

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

我想找到推荐网址的操作和控制器。

有什么方法可以手动使用像“/ Product / 23”这样的字符串来查找控制器,并将字符串作为网址生成?

2 个答案:

答案 0 :(得分:8)

我在几周前写过关于做这件事的博客:

Creating a RouteData instance from a URL

答案 1 :(得分: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);