Access page url from admin panel

Topics: Customizing Orchard, Writing modules
Mar 24, 2011 at 3:31 PM

Hello How to get page url from admin panel where the page is edited

Example.:

the page ID is 49 in admin panel URL

http://localhost:30320/OrchardLocal/Admin/Contents/Edit/49

the 'real' page url is

http://localhost:30320/OrchardLocal/tools/body-mass-index

how to get this url from Driver which is called from admin panel

 public class QRCodePartDriver : ContentPartDriver        {            private readonly IHttpContextAccessor _httpContextAccessor;

 public QRCodePartDriver(INotifier notifier, IHttpContextAccessor httpContextAccessor, INavigationManager nav, RouteCollection routeCollection)            {                
     _httpContextAccessor = httpContextAccessor;    
            _nav = nav;  
              _routeCollection = routeCollection;        
        }

}

_httpContextAccessor.Current().Request.Url.OriginalString

returns http://localhost:30320/OrchardLocal/Admin/Contents/Edit/49

i need to get length of http://localhost:30320/OrchardLocal/tools/body-mass-index

from http://localhost:30320/OrchardLocal/Admin/Contents/Edit/49

Coordinator
Mar 25, 2011 at 12:15 AM

You can get the URL for a content item from Url.ItemDisplayUrl that is provided by Orchard.Mvc.Html.ContentItemExtensions.

Mar 25, 2011 at 9:13 AM

Thank you, the complete code looks like this

 protected override DriverResult Editor(
                QRCodePart part, dynamic shapeHelper)
            {

                string url = ContentItemExtensions.ItemDisplayUrl(new UrlHelper(new RequestContext(
                  new HttpContextWrapper(HttpContext.Current),
                  new RouteData()), RouteTable.Routes), part);
...
            }

Mar 25, 2011 at 11:50 AM

Thanks, I was looking for this.

This should be available as a utility method somewhere in Orchard.Routable so you can get an item URL easily without being inside a View (as the Url.ItemDisplayUrl requires).