gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : Route to URL

转载 作者:行者123 更新时间:2023-12-05 00:06:48 24 4
gpt4 key购买 nike

在 MVC 中将 URL(相对或绝对)获取到路由的最简单方法是什么?我在 SO 上看到了这段代码,但它似乎有点冗长,并且没有枚举 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" }));

和:
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;
}

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

最佳答案

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

您应该可以通过 Url 使用它 Controller 中的对象。要映射到操作,请使用 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"));

编辑:从您的新答案看来,您正在尝试构建站点地图。

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

关于asp.net-mvc - ASP.NET MVC : Route to URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com