Try our conversational search powered by Generative AI!

Cannot assign local block from one page to another

Found in

EPiServer.CMS.Core 9.12.0

Fixed in

EPiServer.CMS.Core 10.1.0

(Or a related package)

Created

Jul 12, 2016

Updated

Nov 14, 2016

Area

CMS Core

State

Closed, Fixed and tested


Description

When creating a new page and cloning a block to the new page, the block data is empty.

Steps to reproduce

1. The property of block on a page type.

public class StandardPage : SitePageData
{
    public virtual ImageSliderBlock ImageSlider { get; set; }
}

2. Block model.

public class ImageSliderBlock : BlockData 
{
    [CultureSpecific] 
    [Editable(true)] 
    [Display(
        Name = "SlideItems ", 
        GroupName = TabNames.ImageSlide, 
        Order = 1)] 
    public virtual LinkItemCollection SlideItems { get; set; } 
}

3. Cloning code.

// the value of ImageSlider is already set on the OriginalPage
var originalPage = DataFactory.Instance.Get<StandardPage>(new PageReference(237));
var contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();
var newMirrorPage = contentRepository.GetDefault<StandardPage>(PageReference.StartPage).CreateWritableClone() as StandardPage;
 
if (originalPage.Property["ImageSlider"].Value != null)
{
    newMirrorPage.Name = "NewMirrorPage";
    var cloneImageSlider = ((ImageSliderBlock)originalPage.Property["ImageSlider"].Value).CreateWritableClone(); 
    newMirrorPage.Property["ImageSlider"].Value = cloneImageSlider;
    DataFactory.Instance.Save(NewMirrorPage, SaveAction.Publish, AccessLevel.Publish);
}

Expected: The local block's data should be copied to a new page.