2016-12-01 7 views
1

私はこれについてしばらく考えていました。 ContentAreaにドロップされたページからプロパティにアクセスするはずのブロックがあるとします。私は複数のページを持っていますが、このブロックと互換性があるはずのページの誰もがインターフェイスから継承する必要があります(IHavePropertiesと呼ぶことができます)。そして、これらのプロパティを実装して、 "currentPage"内部のプロパティにアクセスします。EpiServerの特定のインターフェイスから継承されたContentAreaでのみ使用されるブロックの制限

私の唯一の問題は、ユーザーが編集モードでブロックが属していないcontentareaにこのブロックをドロップする傾向があることです。これが私の主な関心事です。 PageのContentAreaがIHavePropertiesインターフェイスの実装である場合、インターフェイスの実装であるContentAreaにのみドロップできるようにブロックを制限できますか?

これを行う別の方法は、このBlockTypeのインターフェイスにcontentreferenceを持たせ、contentareaなしでレンダリングすることですか?

私はContentAreaソリューションを期待していた

...

答えて

2

はい、あなたはこのようなContentAreaプロパティに属性を追加することによってこれを行うことができます。

[AllowedTypes(typeof(IHaveProperties))] 
public virtual ContentArea SomeContentArea { get; set; } 

からこのことについての素晴らしい記事がありますここEPiServer:あなたがコンテンツ領域のプロパティに属性AllowedTypesを使用することができます

http://world.episerver.com/blogs/Ben-McKernan/Dates/2015/2/the-new-and-improved-allowed-types/

+0

を参照してください。この問題は、ユーザーがブロックをこのブロックを保持すると想定されていないContentAreaにドラッグしようとしている場合に発生します。ブロックには、currentPageをnullチェックし、無効なキャスト(インターフェイスを実装していないページ)が原因で発生した例外をキャッチするインターフェイスにcurrentPageをキャストするときの条件があります。 –

+2

私はあなたがこれによって何を意味するか分かりません。コード例を示すために気をつけますか? – Andreas

関連する問題