More in this section
Forums / Developing with Sitefinity / Finding Pages By Additional Urls with Fluent API

Finding Pages By Additional Urls with Fluent API

The forums are in read-only mode. In case that you want to directly contact the Progress Sitefinity team use the support center. In our Google Plus group you can find more than one thousand Sitefinity developers discussing different topics. For the Stack Overflow threads don’t forget to use the “Sitefinity” tag.
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