Take the community feedback survey now.
Take the community feedback survey now.
 
                What about using UrlResolver
var content = UrlResolver.Current.Route(new UrlBuilder(slide.Href));
return content != null ? content.ContentLink : ContentReference.EmptyReference;
I am getting error Cannot implicitly convert type Episerver.core.contentreference to system.collection.genericelist<episerver.core.pagedata>
on this line
return content != null ? content.ContentLink : ContentReference.EmptyReference;
My whole code is like this
public static List<PageData> ToPages(this LinkItemCollection linkItemCollection)
        {
            var pages = new List<PageData>();
            if (linkItemCollection == null) return pages;
            
            foreach (LinkItem linkItem in linkItemCollection)
            {
                string linkUrl;
                               
                
                if (!PermanentLinkMapStore.TryToMapped(linkItem.Href, out linkUrl))
                    continue;
                if (string.IsNullOrEmpty(linkUrl))
                    continue;
                var pageReference = PageReference.ParseUrl(linkUrl);
                if (PageReference.IsNullOrEmpty(pageReference))
                    continue;
                pages.Add(DataFactory.Instance.GetPage((pageReference)));
            }
            return pages;
        }
                        Try this
public static List<T> ToPages<T>(this LinkItemCollection linkItemCollection) where T : PageData
{
var pages = new List<T>();
if (linkItemCollection == null || linkItemCollection.Count.Equals(0))
return new List<T>();
var urlResolver = ServiceLocator.Current.GetInstance<UrlResolver>();
foreach (var linkItem in linkItemCollection)
{
if (String.IsNullOrEmpty(linkItem.Href))
continue;
var urlBuilder = new UrlBuilder(linkItem.Href);
var page = urlResolver.Route(urlBuilder) as T;
if (page != null && (!page.IsDeleted && page.CheckPublishedStatus(PagePublishedStatus.Published)))
{
pages.Add(page);
}
}
                        I get error
Error CS0161 'LinkCollectionExtentions.ToPages<T>(LinkItemCollection)': not all code paths return a value
Looks like we are not returning anything
My other class referencing this is throwing error now.
  protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            var lic = Persons.Value as LinkItemCollection;
            repeatPerson.DataSource = lic.ToPages(); // this code throws error
            repeatPerson.DataBind();
        }
Any idea?
I think you need to do like this
 repeatPerson.DataSource = lic.ToPages<PageData>(); // this code throws error
            repeatPerson.DataBind();
                        Just last one thing. What is replacement for below
 var url = new UrlBuilder(linkItem.Href);
                if (PermanentLinkMapStore.ToMapped(url)) //get warning here
                        This would be the equivalent
var page = urlResolver.Route(urlBuilder) as T;
Let urlresolver make the mapping between internal objekt and inernal in a linklist.
Here is my code where i tried to use your suggestion. how we make use of page variable to replace permanentlinkmapstore?
protected string Mymethod(object dataItem)
        {
            var linkItem = dataItem as LinkItem;
            if (linkItem == null) return "";
            try
            {
                var url = new UrlBuilder(linkItem.Href);
                var urlResolver = ServiceLocator.Current.GetInstance<UrlResolver>();
                var page = urlResolver.Route(url) as PageData;
                
                if (PermanentLinkMapStore.ToMapped(url))
                {
                    var success = EPiServer.Global.UrlRewriteProvider.ConvertToExternal(url, null, Encoding.UTF8);
                    return url.ToString();
                }
                return linkItem.Href;
            }
            catch (Exception)
            {
                //some logic            }
            
        }
                        Try this
protected string Mymethod(object dataItem)
{
			var linkItem = dataItem as LinkItem;
            if (linkItem == null) return "";
			
			var content = UrlResolver.Current.Route(new UrlBuilder(linkItem.Href));
            return content != null ? UrlResolver.Current.GetUrl(content.ContentLink) : linkItem.Href;
}
                        Thanks a lot. How to mark as answer? I dont see any option. It seem only i mark my replies are answers.
 
    
    
    
The above code gives warning that PermanentLinkUtility.GetContentReference(UrlBuilder)' is obsolete: 'This method only supports classic/mapped url's which are no longer used since 8.0 - use PermanentLinkUtility.GetGuid(url) to get the unique ID from an URL'
When i try to change if condition like
Then it gives error Cannot convert EpiServer.UrlBuilder to string
What is alternative to this?
I am on Episerver 9.2