Cómo configurar la directiva de caché de salida en controles personalizados sin código en frente

votos
0

He escrito un control que hereda de System.Web.UI.WebControls.DropDownListy por lo que no tengo ningún código por delante para este control, pero aún quiero configurar la directiva OutputCache. ¿Hay alguna forma de configurar esto en el código C #, decir con un atributo o algo así?

En particular, espero poder replicar la VaryByParampropiedad

Publicado el 17/09/2008 a las 02:35
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
2

Me di cuenta que es un increíblemente vieja pregunta, pero todavía es digno de una respuesta.

Lo que estamos hablando no es un control de usuario es un control personalizado. Lo que se quiere hacer con el OutputCache se puede hacer simplemente con el contexto de la caché.

En su código en el que está recibiendo los datos y la unión a su DropDownList hacer algo como esto:

        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();
Respondida el 15/07/2010 a las 19:14
fuente por usuario

votos
1
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
Respondida el 17/09/2008 a las 02:41
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more