【发布时间】:2011-12-01 22:50:21
【问题描述】:
我想知道如何在给定区域、控制器和操作名称的情况下获取 URL。到目前为止,我设法想出的是:
var httpContext = new HttpContextWrapper(HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(httpContext);
if (routeData != null) {
var virtualPath = routeData.Route.GetVirtualPath(new RequestContext(httpContext, routeData), new RouteValueDictionary(new { area = "Pages", controller = "Home", action = "Index" }));
if (virtualPath != null)
newNode.Url = "~/" + virtualPath.VirtualPath;
}
但是它不起作用。我想知道是否有人可以提供帮助。
谢谢
【问题讨论】:
-
您需要在哪里执行此操作?您是否有权访问 HTTP 上下文?当您说它不起作用时,您能否更具体一点并解释预期结果和实际结果?
-
感谢您的回复。我正在尝试将其添加到我在网上找到的 MVC SiteMap 提供程序中。我发现缺少区域支持的那个,所以我想我只需将其添加到路由值字典中,但事实并非如此,因为选择了错误的路由。我觉得这与数据令牌有关。
标签: asp.net-mvc asp.net-mvc-routing