gpt4 book ai didi

block - EPiServer 9 - 以编程方式将 block 添加到新页面

转载 作者:行者123 更新时间:2023-12-02 17:22:06 24 4
gpt4 key购买 nike

我找到了一些关于如何向页面添加 block 的建议,但无法按照我想要的方式工作,所以也许有人可以帮忙。
我想要做的是安排一个读取文件的计划作业,创建具有特定页面类型的新页面,并在新页面中向内容属性添加一些 block 。 block 字段将使用读取的文件中的数据进行更新。

我在预定的作业中有以下代码,但在

repo.Save((IContent) newBlock, SaveAction.Publish);

报错

The page name must contain at least one visible character.

这是我的代码:

public override string Execute() 
{
//Call OnStatusChanged to periodically notify progress of job for manually started jobs
OnStatusChanged(String.Format("Starting execution of {0}", this.GetType()));

//Create Person page
PageReference parent = PageReference.StartPage;

//IContentRepository contentRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentRepository>();
//IContentTypeRepository contentTypeRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentTypeRepository>();

//var repository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentRepository>();
//var slaegtPage = repository.GetDefault<SlaegtPage>(ContentReference.StartPage);

IContentRepository contentRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentRepository>();
IContentTypeRepository contentTypeRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentTypeRepository>();

SlaegtPage slaegtPage = contentRepository.GetDefault<SlaegtPage>(parent, contentTypeRepository.Load("SlaegtPage").ID);

if (slaegtPage.MainContentArea == null) {
slaegtPage.MainContentArea = new ContentArea();
}

slaegtPage.PageName = "001 Kim";

//Create block
var repo = ServiceLocator.Current.GetInstance<IContentRepository>();

var newBlock = repo.GetDefault<SlaegtPersonBlock1>(ContentReference.GlobalBlockFolder);

newBlock.PersonId = "001";
newBlock.PersonName = "Kim";
newBlock.PersonBirthdate = "01 jan 1901";

repo.Save((IContent) newBlock, SaveAction.Publish);

//Add block
slaegtPage.MainContentArea.Items.Add(new ContentAreaItem
{
ContentLink = ((IContent) newBlock).ContentLink
});

slaegtPage.URLSegment = UrlSegment.CreateUrlSegment(slaegtPage);

contentRepository.Save(slaegtPage, EPiServer.DataAccess.SaveAction.Publish);

_stopSignaled = true;

//For long running jobs periodically check if stop is signaled and if so stop execution
if (_stopSignaled) {
return "Stop of job was called";
}

return "Change to message that describes outcome of execution";
}

最佳答案

您可以通过以下方式设置名称

((IContent) newBlock).Name = "MyName";

关于block - EPiServer 9 - 以编程方式将 block 添加到新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com