0

これは私の最初の投稿です。

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

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

私が抱えている問題は、ページに複数の、たとえば 3 つの color.ascx コントロール (赤、緑、青) が LoadControl で動的に読み込まれる可能性があることです。キャッシュされた後、LoadControl メソッドは正しく PartialCachingControl を返しますが、ページを更新すると、常にキャッシュからの最後のバージョンになります。つまり、ページには赤、緑、青ではなく 3 つの青が表示されます。

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

ご協力いただきありがとうございます。

4

2 に答える 2

0

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

于 2012-02-16T07:59:23.757 に答える