C# Episerver-拦截PublishedContent事件时,页面类型变为不可编辑

C# Episerver-拦截PublishedContent事件时,页面类型变为不可编辑,c#,episerver,episerver-7,episerver-8,C#,Episerver,Episerver 7,Episerver 8,我正在连接到Episerver中的PublishedContent事件,因此当用户发布特定的页面类型时,将执行一些逻辑(创建pdf),并在其中一个属性中保存一个字符串值。(pdf的路径) 这是工作,PDF文件被创建和路径的PDF文件也被保存 然而,我的问题是,发布完成后,所有属性都变成只读,我必须单击另一个节点,然后再次单击该节点,然后才能对其进行编辑。-这是正常的,还是与我保存的方式有关 这是我的代码: public void Initialize(InitializationEngine c

我正在连接到Episerver中的PublishedContent事件,因此当用户发布特定的页面类型时,将执行一些逻辑(创建pdf),并在其中一个属性中保存一个字符串值。(pdf的路径)

这是工作,PDF文件被创建和路径的PDF文件也被保存

然而,我的问题是,发布完成后,所有属性都变成只读,我必须单击另一个节点,然后再次单击该节点,然后才能对其进行编辑。-这是正常的,还是与我保存的方式有关

这是我的代码:

public void Initialize(InitializationEngine context)
{
    var events = ServiceLocator.Current.GetInstance<IContentEvents>();
    events.PublishedContent += EventsPublishedContent;
}

private void EventsPublishedContent(object sender, ContentEventArgs e)
{
    if (e.Content is myType)
    {
        var currentPage = e.Content as RatePlanPageType;

        var pdfPath = businessLogic.CreatePdf(e.content);

        var clone = currentPage.CreateWritableClone();

        clone.Property["PdfFiles"].Value = pdfPath;

        var contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();

        contentRepository.Save(clone, SaveAction.Save);
    }
}
public void初始化(初始化引擎上下文)
{
var events=ServiceLocator.Current.GetInstance();
events.PublishedContent+=EventsPublishedContent;
}
私有void EventsPublishedContent(对象发送方,ContentEventArgs e)
{
如果(例如,内容为myType)
{
var currentPage=e.内容为RatePlanPageType;
var pdfPath=businessLogic.CreatePdf(e.content);
var clone=currentPage.CreateWritableClone();
clone.Property[“PdfFiles”]。Value=pdfPath;
var contentRepository=ServiceLocator.Current.GetInstance();
contentRepository.Save(克隆,SaveAction.Save);
}
}
这就是保存后UI中所有属性的外观


如果我单击树中的另一个节点,然后再次单击此节点,它将恢复正常,所有数据都将正确保存。

我没有意识到我使用了错误的方法,而是将其从

events.PublishedContent = 

而且它工作得很好

我从Episerver world得到的解释是:


您的代码发布内容的新版本(请检查versions小工具以确认这一点)。这意味着您不再查看主要草稿,因此UI将其设置为只读。您可以连接到发布事件,该事件将停止此行为,或者不在您的保存方法中发布新版本的内容。

我没有意识到我连接到了错误的方法,而是将其从

events.PublishedContent = 

而且它工作得很好

我从Episerver world得到的解释是:


您的代码发布内容的新版本(请检查versions小工具以确认这一点)。这意味着您不再查看主要草稿,因此UI将其设置为只读。您可以挂接到发布事件,该事件将停止此行为,或者不在保存方法中发布新版本的内容。

如果要在PublishedContent事件上保存克隆的属性数据,则必须应用SaveAction.Patch而不是SaveAction.Save

contentRepository.Save(clone, SaveAction.Patch);

如果要在PublishedContent事件上保存克隆的属性数据,则必须应用SaveAction.Patch而不是SaveAction.save

contentRepository.Save(clone, SaveAction.Patch);