0

在 Global.asax 中,我们使用以下方法注册路由:

MapRoute(this System.Web.Routing.RouteCollection routes, 
    string name, 
    string url, 
    object defaults, 
    string[] namespaces)

有没有办法string url从代码中检索?具体来说,我有兴趣从注册路由的 url 中获取路由段,如下所示:

"customRoutePrefix/{controller}/{action}/{id}"

我需要查找“customRoutePrefix”或任何已注册路由的等效项。

我想我也许可以System.Web.Routing.RouteTable.Routes用来做这个,但我还没有在那里找到它。

这可能吗/我应该怎么做?

4

1 回答 1

1

是的。

您可以使用:

this.RouteData.Values["segment name"]

例如,

this.RouteData.Values["controller"];

编辑 1

这段代码将完成检索所有已注册路由 URL 的技巧

var res = new List<string>();

foreach (var item in RouteTable.Routes)
{
    var r = (Route)item;

    res.Add(r.Url);
}

this.ViewBag.Res = res;

在您看来:

@foreach (var item in this.ViewBag.Res)
{
    <div>@item</div>
}

结果:

Chapter14/{controller}/{action}/{id}
Movies/{controller}/{action}/{id}
api/{controller}/{id}
{resource}.axd/{*pathInfo}
{resource}.svc/{*pathInfo}
{controller}/{action}/{id}
wcf/{*pathInfo}
于 2012-10-25T20:07:37.290 回答