ASP.NET MVC: кэширование выпадающего списка

#asp.net-mvc #caching #combobox #telerik

#asp.net-mvc #кэширование #выпадающий список #telerik

Вопрос:

Возможно ли обналичить выпадающий список?

Я использую окно Telerik MVC, выпадающий список, и содержимое окна (включая выпадающий список) возвращается в частичном виде. Содержимое частичного представления зависит от списка параметров, но для каждого div в этом окне есть поле со списком, содержимое которого обычно не изменяется, и оно содержит ~ 2000 записей.

я подумываю о возврате ViewData[«ComboContent»] с использованием отдельного контроллера с кэшированием перед возвратом самого окна, но, возможно, есть способ получше…

TIA

обновлено (мой код контроллера):

         [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);
        }
  

Ответ №1:

Кэшируйте данные вместо кэширования выпадающего списка.

Итак, вместо того, чтобы помещать список выбора в ViewData, поместите для него содержимое:

 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.
  

Обратите внимание, код неточен, но это всего лишь пример.

Затем, по вашему мнению, отобразите список.

Я надеюсь, что это поможет.