2012-02-15 6 views
0

これは私の最初の投稿です。LoadControlを使用してキャッシュされたWebUserControlを表示する

私は、開発者がWebUserControlsの形式で独自のプラグインを作成できるようにCMSを作成しました。これらのプラグインは、ユーザーがコンテンツに挿入することができます(TinyMCE経由)。これは、LoadControlメソッドを使用してプログラム階層でコントロールの階層を追加し、そのプロパティを設定することによって、プログラムで実行されます。これまでのすべての良い。

開発者がWebUserControlでOutputCacheを使用できるようにするには、これらのコントロールをWebUserControlのプロパティでキャッシュする必要があります。例えば開発者はWebUserControl color.ascxを作成しました。これはColor(Red | Green | Blue)というプロパティーを持っています。このプロパティーの値によって、キャッシュはRed、Green、Blueのバージョンを格納できます。

問題は、1つのページに2つ以上のcolor.ascxコントロール(赤、緑、青)がLoadControlで動的にロードされているとします。キャッシュされた後、LoadControlメソッドはPartialCachingControlを正しく返しますが、ページをリフレッシュすると常にキャッシュの最後のバージョンになります。つまり、ページには赤、緑、青の代わりに青が3つ表示されます。

キャッシュから正しいバージョンをロードするためのLoadControl(または他の手段による方法)がありますか?つまり、Colorプロパティを使用して、OutputCacheを使用してWebUserControlsに基づいてキャッシュに保存する必要があります。プロパティ?

ありがとうございました。

答えて

0

古典的なLoadControlキャッシングの問題があるようです。プログラム内の同じ場所(たとえば各ループ)から呼び出され、同じコントロールの場合、この関数はキャッシュが必要な場合は常に同じインスタンスを返します。これを避けるには、3つの異なる呼び出し、つまり3つの異なるコード行をアプリケーションで作成します。

+0

申し訳ありません:詳しい説明とコードが、私はそれを解決した後、私が書いたブログのエントリで見つけることができます。あなたのコメントをありがとうが、それは私には意味がありません。私はあなたが私の質問を理解したとは思わない。何を意味するのかを説明するリンクがありますか? – KowDot

+1

私はこれを私のアプリケーションで使っています:[LoadControl](http://devnet.kentico.com/Blogs/Martin-Hejtmanek/April-2009/How-to-dynamically-load-partially-cached-controls.aspx) –

関連する問題