Получить VirtualPath из области, контроллера и действий - PullRequest
0 голосов
/ 02 декабря 2011

Мне было интересно, как получить 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;
}

Однако это не работает. Мне было интересно, если кто-то может помочь.

Спасибо

1 Ответ

2 голосов
/ 05 декабря 2011

Если кому-то интересно, вот решение, которое я придумала:

// Set the context
var context = new RequestContext(new HttpContextWrapper(HttpContext.Current),
    new RouteData());
var urlHelper = new UrlHelper(context);

// Set the url
var url = urlHelper.Action("Index", "Home",
    new RouteValueDictionary(new { area = "Pages" }));

Надеюсь, это кому-нибудь поможет.

...