0

Episerver 内の PublishedContent イベントにフックしているため、ユーザーが特定のページ タイプを公開すると、いくつかのロジックが実行され (pdf の作成)、文字列値がプロパティの 1 つに保存されます (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);
    }
}

これは、保存後の UI でのすべてのプロパティの外観です。

ここに画像の説明を入力

ツリー内の別のノードをクリックしてから、このノードをもう一度クリックすると、通常の状態に戻り、すべてのデータが正しく保存されます。

4

2 に答える 2

0

複製されたプロパティ データを PublishedContent イベントで保存する場合は、SaveAction.Save の代わりに SaveAction.Patch を適用する必要があります

contentRepository.Save(clone, SaveAction.Patch);
于 2018-10-11T10:03:09.733 に答える