Wie ohne Code vor der Ausgabe-Cache-Richtlinie über benutzerdefinierte Steuerelemente setzen

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

Frage

Ich habe eine Kontrolle geschrieben, das von der System.Web.UI.WebControls.DropDownList erbt und so habe ich keinen Code vor für diese Kontrolle, aber ich will noch den Output Direktive setzen. Ich es eine Möglichkeit, dies in der C # -Code zu setzen, sagen mit einem Attribut oder so etwas?

Ich bin die Hoffnung, vor allem in der Lage sein, die VaryByParam Eigenschaft zu replizieren

War es hilfreich?

Lösung

Ich weiß, das eine unglaublich alte Frage, aber es ist immer noch verdient eine Antwort.

Was Sie sprechen, ist kein User Control es ein Custom Control ist. Was Sie wollen, mit dem Output tun kann einfach mit dem Context Cache erfolgen.

In Ihrem Code, wo Sie die Daten erhalten und die Bindung an Ihre Dropdownlist etwas tun, wie folgt aus:

        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();

Andere Tipps

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top