+1-888-365-2779
Try Now
More in this section

Forums / Developing with Sitefinity / Finding Pages By Additional Urls with Fluent API

Finding Pages By Additional Urls with Fluent API

3 posts, 0 answered
  1. Olov
    Olov avatar
    2 posts
    Registered:
    02 Oct 2013
    02 Oct 2013
    Link to this post
    HI,
    I'm running into an issue where I cannot add an additional URL for a page because that additional url already exists on another page. 

    I'm looking to find this other page programmatically. 

    I am developing for Sitefinity 5+ and want to use the Fluent API

    I have tried modifying the code on the Developer Documentation without success ( http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/pages/querying-pages#FindingPageFluentApi ) 

    I was hoping to use something like this: 

    01.string urlName = "~/productsandservices";
    02. 
    03.        PageData pageData = null;
    04. 
    05.        var count = 0;
    06.        App.WorkWith().Pages().Where(pN => pN.Urls.Contains(urlName)).Count(out count);
    07. 
    08.        if (count != 0)
    09.        {
    10.            pageData = App.WorkWith().Pages().Where(pN => pN.Urls.Contains(urlName)).Get().First().Page;
    11.            Response.Write(pageData.Title.ToString());
    12.        }
    13.        else
    14.        {
    15.            Response.Write( "\"" + urlName + "\"" + " Not Found");
    16.        }

    However, that introduces a type error, where pN.Urls.Contains(...) expects a PageUrlData item. I attempted to rectify this by defining my own PageUrlData item and assigning the 'Url' property to 'urlName' like so:

    01.string urlName = "~/productsandservices";
    02. 
    03.PageData pageData = null;
    04. 
    05.PageUrlData pageUrlData = new PageUrlData();
    06.pageUrlData.Url = urlName;
    07. 
    08.var count = 0;
    09.App.WorkWith().Pages().Where(pN => pN.Urls.Contains(pageUrlData)).Count(out count);
    10. 
    11.if (count != 0)
    12.{
    13.    pageData = App.WorkWith().Pages().Where(pN => pN.UrlName == urlName).Get().First().Page;
    14.    Response.Write(pageData.Title.ToString());
    15.}
    16.else
    17.{
    18.    Response.Write( "\"" + urlName + "\"" + " Not Found");
    19.}

    However, this code always returns a count of 0. So, I must be doing something wrong. 

    I think my problems in my custom definition of pageUrlData; however, I do not know how to fix it. 

    Can anyone point out what I'm missing, and how to go about correcting it?

    Thank you
  2. Olov
    Olov avatar
    2 posts
    Registered:
    02 Oct 2013
    14 Oct 2013
    Link to this post
    Guess not.
  3. Atanas Valchev
    Atanas Valchev avatar
    414 posts
    Registered:
    04 Jan 2016
    17 Oct 2013
    Link to this post
    Hi,

    Would it be possible to try the following approach with the native API:

    var addUrl = new PageUrlData();
               addUrl.Url = "~/productsandservices";
                
               PageManager pageManager = PageManager.GetManager();
               var pages = pageManager.GetPageNodes();
               foreach (var page in pages)
               {
                   var urls = page.Urls;
                   foreach (var url in urls)
                   {
                       var present = url.Url == "~/productsandservices";
                   }
               }
     

    Regards,
    Atanas Valchev
    Telerik
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
3 posts, 0 answered