C# 限制块仅用于从上位机中某个接口继承的ContentArea中
我已经考虑了一段时间了。假设我有一个块,该块应该从内容区域中删除的页面访问属性。我有多个页面,其中每个页面都应该与此块兼容,必须从接口继承(我们称之为IHaveProperties)并实现这些属性,以便我可以将“currentPage”强制转换到此接口中,从而访问其中的属性 我唯一的问题是,用户在编辑模式下倾向于将该块放到该块不属于的contentarea。这是我主要关心的问题。如果页面上的ContentArea是IHaveProperties接口的一个实现,那么我是否可以限制该块,使其只能放置到作为接口实现的ContentArea上 或者另一种方法是在这个块类型的接口中有一个contentreference,并在没有contentarea的情况下呈现它C# 限制块仅用于从上位机中某个接口继承的ContentArea中,c#,.net,interface,block,episerver,C#,.net,Interface,Block,Episerver,我已经考虑了一段时间了。假设我有一个块,该块应该从内容区域中删除的页面访问属性。我有多个页面,其中每个页面都应该与此块兼容,必须从接口继承(我们称之为IHaveProperties)并实现这些属性,以便我可以将“currentPage”强制转换到此接口中,从而访问其中的属性 我唯一的问题是,用户在编辑模式下倾向于将该块放到该块不属于的contentarea。这是我主要关心的问题。如果页面上的ContentArea是IHaveProperties接口的一个实现,那么我是否可以限制该块,使其只能放置
我希望得到ContentArea解决方案…是的,您可以通过向ContentArea属性添加如下属性来实现:
[AllowedTypes(typeof(IHaveProperties))]
public virtual ContentArea SomeContentArea { get; set; }
关于这一点,EPiServer在这里发布了一篇很棒的帖子:
您可以在content area属性上使用属性
AllowedTypes
,如果这还不够,您可以通过实现IValidate
来创建自己的验证,请参见我知道这一点。当用户试图将块拖动到不应容纳此块的ContentArea时,问题仍然存在。在将currentPage强制转换到接口时,该块有一个条件,在该接口中我执行空检查,并捕获由于无效强制转换(未实现该接口的页面)而导致的任何异常。我不确定这是什么意思。想展示一个代码示例吗?