ASP.NET MVC:路由到URL

Jam*_*ead 4 asp.net-mvc routes

在MVC中获取URL(相对或绝对)的最简单方法是什么?我在这里看到了这个代码,但它似乎有点冗长,并没有枚举RouteTable.

例:

List<string> urlList = new List<string>();
urlList.Add(GetUrl(new { controller = "Help", action = "Edit" }));
urlList.Add(GetUrl(new { controller = "Help", action = "Create" }));
urlList.Add(GetUrl(new { controller = "About", action = "Company" }));
urlList.Add(GetUrl(new { controller = "About", action = "Management" }));
Run Code Online (Sandbox Code Playgroud)

附:

protected string GetUrl(object routeValues)
{
    RouteValueDictionary values = new RouteValueDictionary(routeValues);
    RequestContext context = new RequestContext(HttpContext, RouteData);

    string url = RouteTable.Routes.GetVirtualPath(context, values).VirtualPath;

    return new Uri(Request.Url, url).AbsoluteUri;
}
Run Code Online (Sandbox Code Playgroud)

检查RouteTable并获取给定控制器和操作的URL的更好方法是什么?

Ala*_*tts 7

使用UrlHelper该类:http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.aspx

您应该能够通过Url控制器中的对象使用它.要映射到某个操作,请使用以下Action方法:Url.Action("actionName","controllerName");.该Action方法的完整重载列表如下:http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action.aspx

所以你的代码看起来像这样:

        List<string> urlList = new List<string>();
        urlList.Add(Url.Action("Edit", "Help"));
        urlList.Add(Url.Action("Create", "Help"));
        urlList.Add(Url.Action("Company", "About"));
        urlList.Add(Url.Action("Management", "About"));
Run Code Online (Sandbox Code Playgroud)

编辑:从您的新答案看,您尝试构建站点地图似乎.

看看这个Codeplex项目:http://mvcsitemap.codeplex.com/.我自己没有用过,但看起来很稳固.