2008-09-17 3 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

응답 객체가 같으면 때문에, 단지 부모 페이지의 컨트롤의 속성 아니다 ' 이것은 전체 페이지의 캐시 설정 만 변경합니까? –

관련 문제