作为ContentArea的一部分的本地块
Preambula
[ContentType(...)]
public abstract class _BaseSitePage : PageData { ... }
[ContentType(...)]
public abstract class _ContentPage : _BaseSitePage
{
[Display(Name = "Content 1", GroupName = SystemTabNames.Content, Order = 4)]
public virtual ContentArea Content1 { get; set; }
}
public abstract class _FixedBodyLayoutPage : _ContentPage
{
[Display(Name = "Body", GroupName = SystemTabNames.Content, Order = 100)]
public virtual ThreeColumnRowBlock Body{ get; set; }
}
在创建_FixedBodyLayoutPage
的实例期间,我想将本地块ThreeColumnRowBlock
的Content1
作为预定义块放入Content1
中。 另外我想在编辑页面上显示ThreeColumnRowBlock
实例的唯一属性并隐藏Content1
。
[Editable(false), ScaffoldColumn(false)]
public override ContentArea Content1
{
get { return this.GetPropertyValue(x => base.Content1); }
set { this.SetPropertyValue(x => base.Content1, value); }
}
问题是:我找不到任何合适的方法在Content1内容区域内注册ThreeColumnRowBlock
实例。 API需要ContentReference,但从我看到的本地块没有它。
部分找到解决方案:而不是本地块可以使用共享块。
但之后我无法在没有深度导航的情况下编辑编辑页面上的属性。 我想避免很多。 所有这些嵌套都打破了CMS的概念,更集中于内容而不是对象的层次结构。
是否有可能以某种方式将本地块绑定到共享块? 或强制episerver在页面编辑器内显示共享块属性?
我也尝试实现get / set,它提取共享块的实例并返回它而不是本地块。 但是这并不能欺骗暴虐者。 编辑页面显示来自错误实例的数据。
链接地址: http://www.djcxy.com/p/68875.html上一篇: Local Block as a part of the ContentArea
下一篇: page editing blue borders for blocks in other languages