2 Stimmen

ASP.NET MVC: Zwischenspeicherung von Comboboxen

Ist es möglich, eine Dropdown-Liste einzulösen?

Ich verwende ein Telerik MVC-Fenster, ComboBox, und der Inhalt des Fensters (einschließlich ComboBox) wird mit einer Teilansicht zurückgegeben. Der Inhalt der partiellen Ansicht hängt von der Liste der Parameter, aber auf jedem Div in diesem Fenster gibt es eine ComboBox, deren Inhalt in der Regel unverändert ist und es enthält ~2000 Datensätze.

Ich denke über die Rückgabe von ViewData["ComboContent"] mit separaten Controller mit Cashing vor der Rückgabe des Fensters selbst, aber vielleicht gibt es einen besseren Weg...

TIA

aktualisiert (mein Controller-Code):

        [AcceptVerbs("GET")]
        [OutputCache(Duration = int.MaxValue, VaryByParam = "id")] //Some custom param??
        public ActionResult LoadTimeOffset(int id)
        {
            String error;
            IEnumerable<MyModel> model = repo.GetSomeVariableStuff(id, 10, out error); //always varies
            ViewData["ComboList"] = new SelectList(repo.GetComboitems(id), "Key", "Value", -1); //changes only on id

            if (model.Count() > 0)
            {
                return PartialView("Partial", model);
            }

            return Content(error);
        }

3voto

Tengiz Punkte 7291

Zwischenspeichern der Daten statt Zwischenspeichern des Dropdowns.

Anstatt also die SelectList in die ViewData zu setzen, setzen Sie den Inhalt für sie:

if (HttpContext.Current.Cache["ComboList"] == null)
{
    HttpContext.Current.Cache["ComboList"] = repo.GetComboitems(id); //use Add instead so that you can specify the cache duration.
}
ViewData["ComboList"] = HttpContext.Current.Cache["ComboList"]; //take from cache.

Hinweis: Der Code ist nicht genau, sondern dient nur als Beispiel.

Rendern Sie dann in Ihrer Ansicht die Kombination.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X