You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Episerver默认未启用Update modified date的原因及全局配置问询

关于Episerver中Update Modified Date的问题解答

1. 为何即使在发布事件中,修改日期仍默认不更新?

Episerver默认不勾选该选项,核心是为了区分草稿保存和正式发布两种场景的业务需求:

  • 草稿阶段用户可能频繁编辑保存,若自动更新修改日期,会导致该字段频繁变动,不利于内容版本的追溯和审计(比如区分“草稿迭代”和“正式变更”)。
  • 发布动作默认不触发修改日期更新,是因为系统设计上把“发布”视为将现有草稿推送到线上的操作,而非内容本身的实质性修改——如果用户没有特意勾选,系统默认认为这次发布不需要修改日期同步变更,留给用户自主判断是否需要标记该内容为“已修改并发布”。

2. 全局启用设置、影响及替代方案

是否支持全局启用?

支持,可通过代码层面实现全局自动启用:

  • 订阅ContentPublished事件,在内容发布时强制更新ModifiedDate字段:
[InitializableModule]
[ModuleDependency(typeof(EPiServer.Web.InitializationModule))]
public class ModifiedDateInitializer : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        var contentEvents = ServiceLocator.Current.GetInstance<IContentEvents>();
        contentEvents.PublishedContent += ContentEvents_PublishedContent;
    }

    private void ContentEvents_PublishedContent(object sender, ContentEventArgs e)
    {
        var content = e.Content as IContent;
        if (content != null)
        {
            var writableContent = content.CreateWritableClone() as IContent;
            writableContent.Modified = DateTime.Now;
            DataFactory.Instance.Save(writableContent, SaveAction.Publish, AccessLevel.NoAccess);
        }
    }

    public void Uninitialize(InitializationEngine context)
    {
        var contentEvents = ServiceLocator.Current.GetInstance<IContentEvents>();
        contentEvents.PublishedContent -= ContentEvents_PublishedContent;
    }
}
  • 也可以通过自定义内容类型的元数据,强制设置UpdateModifiedDate默认值为true。

全局启用对现有内容的影响

  • 现有已发布/保存的内容不会自动回溯更新修改日期,只有全局启用后发生的发布/保存动作才会触发修改日期更新。
  • 如果业务中有依赖ModifiedDate的逻辑(比如内容排序、审计报表、缓存策略),需要评估新的更新规则是否会影响这些业务流程。

是否建议全局启用?

是否全局启用取决于业务需求:

  • 如果业务要求每一次发布都必须标记内容为已修改,全局启用是高效的方案。
  • 如果部分内容类型(比如静态页面、基础配置)不需要在发布时更新修改日期,全局启用反而会造成不必要的字段变动,这种情况更适合逐个内容设置或针对特定内容类型做事件监听。

替代方案

  • 事件监听定向处理:只针对特定内容类型(如Article、News)订阅发布事件,更新修改日期,不需要全局覆盖。
  • 批量设置现有内容:使用Episerver的批量编辑工具,筛选需要开启的内容,批量勾选Update Modified Date选项。
  • 自定义属性:创建继承自DateTime的自定义属性,在属性保存时自动同步修改日期,替代原生的ModifiedDate字段。

内容的提问来源于stack exchange,提问作者Farhin Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:30:28