已发布页面中的块包含“此项目未在任何地方使用。”

问题描述 投票:1回答:1

我有一个计划的作业,该作业循环遍历某种类型的所有页面,并为每个页面创建一个块并将其放入ContentArea。

var newBlockForArea = _contentRepository.GetDefault<CrossLinkContainerBlock> 
(assetsFolderForPage.ContentLink, productPageClone.Language);
                        (newBlockForArea as IContent).Name = "newCrossLinkContainer";

var blockReference = _contentRepository.Save((newBlockForArea as IContent), SaveAction.Publish, 
AccessLevel.NoAccess);

var newItem = new ContentAreaItem();
newItem.ContentLink = blockReference;
productPageClone.GeneralContentArea.Items.Add(newItem);

创建块时将其发布。

页面更新后,它会根据先前的状态保存或发布。

_contentRepository.Save(productPageClone, SaveAction.ForceCurrentVersion | SaveAction.Publish, 
AccessLevel.NoAccess);`

稍后检查页面时,该块位于页面的资产文件夹中,并且该块位于正确的ContentArea中,并且可以正确呈现。唯一的问题是,当我编辑该块时,它会显示“此项目未在任何地方使用。”

但是,然后我重新发布了该块所在的页面,然后编辑该块,它说:“此处所做的更改将影响至少一项。”

我正在使用Episerver 11.11.2.0

每次测试后,我都会手动运行计划的作业。

有人知道为什么会这样吗?

episerver
1个回答
0
投票

如果您的内容区域为空,则会发生

尝试以下操作

// Before adding the ContentAreaItem
if(productPageClone.GeneralContentArea == null) 
{
    productPageClone.GeneralContentArea = new ContentArea();
}

productPageClone.GeneralContentArea.Items.Add(newItem);
© www.soinside.com 2019 - 2024. All rights reserved.