将IContent转换为IPublishedContent Umbraco 8

时间:2019-07-03 12:10:22

标签: umbraco umbraco8

是否可以将Content挂钩中的IContent转换/转换为IPublishedContent或Model的构建器模型?

更具体地说,我正在使用“保存”挂钩,如下所示。挂钩的参考:https://our.umbraco.com/documentation/reference/events/contentservice-events

问题在于 content 变量是IContent类型,我无法进行强制转换。

我的相关代码将变量“问题”返回为null:

  private void ContentService_Saving(Umbraco.Core.Services.IContentService sender, Umbraco.Core.Events.ContentSavingEventArgs e)
    {
        foreach (var content in e.SavedEntities)                         
        {
            var documentType = content.ContentType.Alias;
            var question = content as IPublishedContent;

        }
    }

4 个答案:

答案 0 :(得分:0)

必须是

var question = Umbraco.Web.Composing.Current.UmbracoHelper.Content(content.Id);

答案 1 :(得分:0)

在Umbraco 8中,答案是根据Davor Zlotrg的回答,但

git clone https://github.com/troldal/OpenXLSX.git

答案 2 :(得分:0)

实际上,您不应该在这些类型之间进行转换。 这两种类型之间有非常明显的区别:

  • IContent是用于编辑和保存到数据库的内容。
  • IPublishedContent用于快速可视化前端上的内容。

IPublishedContent缓存在一个特殊的层中(Umbraco v8中的NuCache)。

当您挂起Saving事件时,您尚未对已发布的项目执行任何操作,因为该步骤是紧随其后的(并且是可选步骤),因此您只应使用IContent。

答案 3 :(得分:-1)

嗨@Antonios Tsimourtos

当前没有将IContent转换为Model的构建器模型的内置方法。查看此页面它会做什么,但是代码很多https://gist.github.com/jbreuer/dde3605035179c34b7287850c45cb8c9