Retrieve page URL

You can programmatically retrieve the URL of a specific page using a number of methods.

You can get the URL of a page by calling the GetUrl method of the page node. To do so, perform the following:

  1. Get an instance of the page manager class.
  2. Find the page node using the page node ID.
  3. Call the GetUrl method of the page node.
    When calling the GetUrl method, you specify the culture.
  4. The absolute URL is resolved by calling the ResolveUrl method of the UrlPath class.
C#
using System;
using System.Linq;
using Telerik.Sitefinity.Modules.Pages;
using Telerik.Sitefinity.Services;
using Telerik.Sitefinity.Web;

namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Pages
{
    public partial class PagesSnippets
    {
        public string GetUrlByPageNodeId(Guid pageNodeId, string targetCulture, bool resolveAsAbsolutUrl)
        {
            var manager = PageManager.GetManager();

            // Get the pageNode
            var pageNode = manager
               .GetPageNodes()
               .FirstOrDefault(x => x.Id == pageNodeId);

            var culture = SystemManager.CurrentContext.AppSettings.GetCultureByName(targetCulture);

            var url = String.Empty;
            if (pageNode != null)
            {
                // Get the URL of the pageNode
                url = pageNode.GetUrl(culture);
                if (resolveAsAbsolutUrl)
                {
                    // Get the absolute URL of the pageNode
                    url = UrlPath.ResolveUrl(url, true, true);
                }
            }

            return url;
        }
    }
}

Alternatively, you can get the URL of a page by its ID using the sitemap node. To do so, perform the following:

  1. Get an instance of the current sitemap provider.
  2. Find the sitemap node using the page node ID.
  3. Cast the sitemap node to the PageSiteNode class.
  4. Call the GetUrl method of the PageSiteNode class.
    When calling the GetUrl method, you specify the culture and set the fallback behavior.
  5. The absolute URL is resolved by calling the ResolveUrl method of the UrlPath class.
C#
using System;
using Telerik.Sitefinity.Services;
using Telerik.Sitefinity.Web;

namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Pages
{
    public partial class PagesSnippets
    {
        private string GetUrlByPageNodeIdAlternative(Guid pageNodeId, string targetCulture, bool resolveAsAbsolutUrl)
        {
            var siteMap = SiteMapBase.GetCurrentProvider();

            // Get the siteMapNode
            var siteMapNode = siteMap.FindSiteMapNodeFromKey(pageNodeId.ToString()) as PageSiteNode;

            var culture = SystemManager.CurrentContext.AppSettings.GetCultureByName(targetCulture);

            var url = String.Empty;

            if (siteMapNode != null)
            {
                // Get the URL of the siteMapNode
                url = siteMapNode.GetUrl(culture, false);

                if (resolveAsAbsolutUrl)
                {
                    // Get the absolute URL of the pageNode
                    url = UrlPath.ResolveUrl(url, true, true);
                }
            }

            return url;
        }
    }
}

Retrieve the page edit mode URL

In addition to resolving the page browsing URL, some use case scenarios might require that you resolve programmatically the page edit mode URL. Each Sitefinity standard page can be edited directly by typing its edit mode URL in the browser. Most commonly this URL follows the pattern of PageLiveURL + /action/edit. Some complexity is added in the picture if you have additional page URLs, some customization in the way you are resolving them, or are working in multisite mode. While going to the Sitefinity backend UI and editing the desired page form the Pages menu is the most conventional approach, if you want to automate the task, or need to retrieve the page edit mode URL through code, refer to the below sample:

C#
using System;
using Telerik.Sitefinity.Services;
using Telerik.Sitefinity.Web;

namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Pages
{
   public partial class PagesSnippets
   {
       /// <summary>
       /// Resolves the page edit mode URL
       /// </summary>
       /// <param name="pageNodeId"></param>
       /// <param name="targetCulture"></param>
       /// <param name="resolveAsAbsolutUrl"></param>
       /// <returns>By default returns an aboslute URL, wich opens a the provided page in edit mode</returns>
       private string GetEditUrlByPageNodeId(Guid pageNodeId, string targetCulture, bool resolveAsAbsolutUrl = true)
       {
           var url = String.Empty;
           var siteMap = SiteMapBase.GetCurrentProvider();
           // Get the siteMapNode
           var siteMapNode = siteMap.FindSiteMapNodeFromKey(pageNodeId.ToString()) as PageSiteNode;
           if (siteMapNode != null)
           {
               var culture = SystemManager.CurrentContext.AppSettings.GetCultureByName(targetCulture);
               // Get the edit url for the page site node
               url = siteMapNode.GetPageEditBackendUrl(culture);
               if (resolveAsAbsolutUrl)
               {
                   // Get the absolute edit URL of the page site node
                   url = UrlPath.ResolveUrl(url, true, true);
               }
           }
           return url;
       }
   }
}
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
New to Sitefinity?