#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.
Обратите внимание, код неточен, но это всего лишь пример.
Затем, по вашему мнению, отобразите список.
Я надеюсь, что это поможет.