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的更好方法是什么?
使用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/.我自己没有用过,但看起来很稳固.
| 归档时间: |
|
| 查看次数: |
16886 次 |
| 最近记录: |