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

Optimizely CMS 12块列表实现异常:编辑模式仅显示文本域

Optimizely CMS 12 块列表属性显示为文本域的解决方法

问题描述

我正尝试按照Optimizely CMS 12官方文档的《List Properties》实现块列表,代码如下:

// 创建联系人块类型
[ContentType(AvailableInEditMode = false, GUID = "38d57768-e09e-4da9-90df-54c73c61b270")]  
public class ContactBlock : BlockData  
{  
   // 块属性  
}

// 在另一个内容类型上创建联系人块列表属性
public virtual IList<ContactBlock> Contacts { get; set; }

但在编辑模式测试时,该属性仅显示一个文本域,而非文档中展示的块列表编辑器。

解决方法

问题出在未给列表属性添加正确的类型标记,Optimizely需要明确识别这是一个块集合类型。

修改代码,给Contacts属性添加[BackingType(typeof(PropertyList<ContactBlock>))]特性,这是Optimizely识别列表属性的关键:

using EPiServer.Core;
using EPiServer.DataAnnotations;

// 创建联系人块类型
[ContentType(AvailableInEditMode = false, GUID = "38d57768-e09e-4da9-90df-54c73c61b270")]  
public class ContactBlock : BlockData  
{  
   // 可根据需求添加具体块属性
   [Display(Name = "联系人姓名")]
   public virtual string Name { get; set; }

   [Display(Name = "联系邮箱")]
   public virtual string Email { get; set; }
}

// 在目标内容类型中定义块列表属性
[Display(Name = "联系人列表")]
[BackingType(typeof(PropertyList<ContactBlock>))]
public virtual IList<ContactBlock> Contacts { get; set; }

额外注意事项

  • 确保已引用必要命名空间:EPiServer.Core和EPiServer.DataAnnotations
  • 即使ContactBlock设置了AvailableInEditMode = false,块列表编辑器仍能正常识别并允许在列表内编辑块内容
  • 修改完成后重启项目,刷新编辑界面即可看到正常的块列表编辑器

内容的提问来源于stack exchange,提问作者Emil Lundin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:00:59