public IActionResult Index(ChildrenFilterViewModel filterModel, int page) { ChildrenFilterViewModel filter = HttpContext.Session.Get <ChildrenFilterViewModel>(filterKey); if (filter != null) { filter.FullName = filterModel.FullName; filter.Group = filterModel.Group; filter.GroupType = filterModel.GroupType; filter.Age = filterModel.Age; filter.OtherGroups = filterModel.OtherGroups; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }
// GET: Children public async Task <IActionResult> Index(SortState sortState, int page = 1) { ChildrenFilterViewModel filter = HttpContext.Session.Get <ChildrenFilterViewModel>(filterKey); if (filter == null) { filter = new ChildrenFilterViewModel { FullName = string.Empty, Group = string.Empty, GroupType = string.Empty, Age = null, OtherGroups = string.Empty }; HttpContext.Session.Set(filterKey, filter); } string key = $"{typeof(Child).Name}-{page}-{sortState}-{filter.FullName}-{filter.Group}-{filter.GroupType}-{filter.Age}-{filter.OtherGroups}"; if (!_cache.TryGetValue(key, out ChildrenViewModel model)) { model = new ChildrenViewModel(); IQueryable <Child> children = GetSortedChildren(sortState, filter.FullName, filter.Group, filter.GroupType, filter.Age, filter.OtherGroups); int count = children.Count(); model.PageViewModel = new PageViewModel(page, count, pageSize); model.Childs = count == 0 ? new List <Child>() : children.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.ChildrenFilterViewModel = filter; _cache.Set(key, model); } return(View(model)); }