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