3

是否可以在 ContentService 的钩子中将 IContent 转换为 IPublishedContent 或模型的构建器模型?

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

问题是内容变量是 IContent 类型,我不能转换它。

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

  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

3 回答 3

2

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

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

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

当您挂钩 Saving 事件时,您还没有对已发布的项目执行任何操作,因为该步骤在之后(并且它是可选的),因此您应该只使用 IContent。

于 2019-12-02T14:08:21.250 回答
1

它必须是

var question = Umbraco.Web.Composing.Current.UmbracoHelper.Content(content.Id);
于 2019-07-03T13:11:44.057 回答
0

嗨@Antonios Tsimourtos

目前没有内置方法可以将 IContent 转换为 Model 的构建器模型。看看这个页面它做了你想要的,但它有很多代码https://gist.github.com/jbreuer/dde3605035179c34b7287850c45cb8c9

于 2019-10-23T23:06:29.980 回答