我一直在想这个问题。想象一下,我有一个块,它应该从它在ContentArea中被删除的页面访问属性。我有多个页面,其中每个页面都应该与该块兼容,必须从接口继承(让它称之为IHaveProperties)并实现这些属性,以便我可以将“currentPage”转换为此接口,从而访问其中的属性。
我唯一的问题是用户在编辑模式下倾向于将此块放到块不属于的内容区域。这是我的主要关注点。如果Page上的ContentArea是IHaveProperties接口的实现,那么我可以限制块,以便它只能被删除到作为接口实现的ContentArea吗?
或者另一种方法是在这个BlockType的接口中使用contentreference并让它在没有contentarea的情况下呈现?
我希望ContentArea解决方案......
答案 0 :(得分:2)
是的,您可以通过向ContentArea属性添加属性来执行此操作:
[AllowedTypes(typeof(IHaveProperties))]
public virtual ContentArea SomeContentArea { get; set; }
EPiServer上有一篇很棒的文章:
http://world.episerver.com/blogs/Ben-McKernan/Dates/2015/2/the-new-and-improved-allowed-types/
答案 1 :(得分:1)
您可以在内容区域属性中使用属性AllowedTypes
,如果这还不够,您可以通过实施IValidate<T>
创建自己的验证,请参阅http://world.episerver.com/documentation/developer-guides/CMS/Content/Validation/ < / p>