public IActionResult Index(SortState sortState = SortState.NumberAsc, int page = 1) { ContainersFilterViewModel filter = HttpContext.Session.Get <ContainersFilterViewModel>(filterKey); if (filter == null) { filter = new ContainersFilterViewModel { Number = 0, TankCapacity = 0 }; HttpContext.Session.Set(filterKey, filter); } string modelKey = $"{typeof(Containers).Name}-{page}-{sortState}-{filter.Number}-{filter.TankCapacity}"; if (!cache.TryGetValue(modelKey, out ContainersViewModel model)) { model = new ContainersViewModel(); IQueryable <Containers> containers = GetSortedEntities(sortState, filter.Number, filter.TankCapacity); int count = containers.Count(); int pageSize = 10; model.PageViewModel = new PageViewModel(count, page, pageSize); model.Containers = count == 0 ? new List <Containers>() : containers.Skip((model.PageViewModel.PageNumber - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.ContainersFilterViewModel = filter; cache.Set(modelKey, model); } return(View(model)); }
public IActionResult Index(ContainersFilterViewModel filterModel, int page) { ContainersFilterViewModel filter = HttpContext.Session.Get <ContainersFilterViewModel>(filterKey); if (filter != null) { filter.Number = filterModel.Number; filter.TankCapacity = filterModel.TankCapacity; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }