System.Web.UI.WebControls.DropDownList
から継承するコントロールを作成しました。このコントロールの前にコードはありませんが、設定する必要がありますOutputCacheディレクティブ私はC#コードでこれを設定する方法はありますか?私は特に望んでいるコードなしのカスタムコントロールで出力キャッシュディレクティブを設定する方法
は、私は、これは非常に古い質問ですが、それはまだ答えの価値があると認識VaryByParam
プロパティ
System.Web.UI.WebControls.DropDownList
から継承するコントロールを作成しました。このコントロールの前にコードはありませんが、設定する必要がありますOutputCacheディレクティブ私はC#コードでこれを設定する方法はありますか?私は特に望んでいるコードなしのカスタムコントロールで出力キャッシュディレクティブを設定する方法
は、私は、これは非常に古い質問ですが、それはまだ答えの価値があると認識VaryByParam
プロパティ
を複製することができるようにします。
あなたが話しているのはユーザーコントロールではなく、カスタムコントロールです。 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();
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
レスポンスオブジェクトはwouldnので、唯一の親ページの、コントロールのプロパティではありません」これはページ全体のキャッシュ設定を変更するだけですか? –
ありがとうございます! –