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
相关产品推荐
相关产品推荐

