先頭にコードがないカスタム コントロールに出力キャッシュ ディレクティブを設定する方法

StackOverflow https://stackoverflow.com/questions/78974

質問

から継承するコントロールを作成しました。 System.Web.UI.WebControls.DropDownList したがって、このコントロールの前にコードはありませんが、OutputCache ディレクティブを設定する必要があります。これをC#コードで、たとえば属性などを使用して設定する方法はありますか?

特に再現できることを期待しています VaryByParam 財産

役に立ちましたか?

解決

これが信じられないほど古い質問であることは承知していますが、それでも答える価値はあります。

あなたが話しているのはユーザーコントロールではなく、カスタムコントロールです。OutputCache で実行したいことは、Context Cache を使用するだけで実行できます。

データを取得して DropDownList にバインドしているコードでは、次のようなことを実行します。

        List<Object> listOfObjects = null;
//assuming a List of Objects... it doesn't matter whatever type of data you use
        if (Context.Cache["MyDataCacheKey"] == null)
        {
            // data not cached, load it from database
            listOfObjects = GetDataFromDB();
//add your data to the context cache with a sliding expiration of 10 minutes.
            Context.Cache.Add("MyDataCacheKey", listOfObjects, null,
                System.Web.Caching.Cache.NoAbsoluteExpiration,
                TimeSpan.FromMinutes(10.0),
                System.Web.Caching.CacheItemPriority.Normal, null);
        }
        else
            listOfObjects = (List<Object>)Context.Cache["MyDataCacheKey"];

        DropDownList1.DataSource = listOfObjects;
        DropDownList1.DataBind();

他のヒント

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top