2008-09-17 6 views
0

System.Web.UI.WebControls.DropDownListから継承するコントロールを作成しました。このコントロールの前にコードはありませんが、設定する必要がありますOutputCacheディレクティブ私はC#コードでこれを設定する方法はありますか?私は特に望んでいるコードなしのカスタムコントロールで出力キャッシュディレクティブを設定する方法

は、私は、これは非常に古い質問ですが、それはまだ答えの価値があると認識VaryByParamプロパティ

答えて

2

を複製することができるようにします。

あなたが話しているのはユーザーコントロールではなく、カスタムコントロールです。 OutputCacheで何をしたいのかは、単にコンテキストキャッシュを使って行うことができます。あなたがデータを取得し、あなたの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(); 
+0

ありがとうございます! –

1
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 
Response.Cache.SetCacheability(HttpCacheability.Server); 
Response.Cache.SetValidUntilExpires(true); 
+0

レスポンスオブジェクトはwouldnので、唯一の親ページの、コントロールのプロパティではありません」これはページ全体のキャッシュ設定を変更するだけですか? –

関連する問題