1

ユーザー コントロールで出力キャッシュされるアイテムのリストがあります。管理者がログインしている場合、各項目に削除ボタンを追加したいと考えています。

出力キャッシュがないと、現在のユーザーが管理者ロールのメンバーであるかどうかを確認し、それに応じてボタンを表示/非表示にします。リストは現在出力キャッシュされているため、それを行うことはできません。

置換コントロールを確認しましたが、まず、完全なコントロールではなく文字列を返します。次に、静的メソッドであるため、リスト内の各項目にプロパティとして追加した 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 メソッドが呼び出されることはありません。

4

0 に答える 0