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

EPiServer 9 - Add block to new page programmatically

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

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

处失败
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";