Wie ohne Code vor der Ausgabe-Cache-Richtlinie über benutzerdefinierte Steuerelemente setzen
-
09-06-2019 - |
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
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);