ユーザー コントロールで出力キャッシュされるアイテムのリストがあります。管理者がログインしている場合、各項目に削除ボタンを追加したいと考えています。
出力キャッシュがないと、現在のユーザーが管理者ロールのメンバーであるかどうかを確認し、それに応じてボタンを表示/非表示にします。リストは現在出力キャッシュされているため、それを行うことはできません。
置換コントロールを確認しましたが、まず、完全なコントロールではなく文字列を返します。次に、静的メソッドであるため、リスト内の各項目にプロパティとして追加した ItemId にアクセスできません。 .
リストに削除ボタンを追加する正しい方法は何ですか?
更新 ページのpage_loadとユーザーコントロールに次を追加しようとしました:
this.Response.DisableKernelCache();
HttpCacheValidateHandler val = new HttpCacheValidateHandler(ValidateCache);
this.Response.Cache.AddValidationCallback(val, null);
と
public static void ValidateCache(HttpContext context, Object data, ref HttpValidationStatus status)
{
if (context.User.IsInRole("administrator"))
status = HttpValidationStatus.Invalid;
else
status = HttpValidationStatus.Valid;
}
ユーザーコントロールを次のように装飾しました。
[PartialCaching(3600, VaryByCustom = "Page", VaryByParams = "paging")]
オープン ソース CMS Umbraco を使用してサイトを作成しているため、VaryByCustom="Page" は CMS の現在の documentnode によってキャッシュを変化させます。VaryByParams="paging" は、"paging"-url パラメータ (リスト内の page1、page2 など) によってリストを変化させます。
ValidateCache メソッドが呼び出されることはありません。