public IActionResult Index(SortState sortState = SortState.CarMarkNameAsc, int page = 1) { CarMarksFilterViewModel filter = HttpContext.Session.Get <CarMarksFilterViewModel>(filterKey); if (filter == null) { filter = new CarMarksFilterViewModel { CarMarkName = string.Empty }; HttpContext.Session.Set(filterKey, filter); } string modelKey = $"{typeof(CarMark).Name}-{page}-{sortState}-{filter.CarMarkName}"; if (!cache.TryGetValue(modelKey, out CarMarkViewModel model)) { model = new CarMarkViewModel(); IQueryable <CarMark> carMarks = GetSortedEntities(sortState, filter.CarMarkName); int count = carMarks.Count(); int pageSize = 10; model.PageViewModel = new PageViewModel(page, count, pageSize); model.Entities = count == 0 ? new List <CarMark>() : carMarks.Skip((model.PageViewModel.CurrentPage - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.CarMarksFilterViewModel = filter; cache.Set(modelKey, model); } return(View(model)); }
public IActionResult Index(CarMarksFilterViewModel filterModel, int page) { CarMarksFilterViewModel filter = HttpContext.Session.Get <CarMarksFilterViewModel>(filterKey); if (filter != null) { filter.CarMarkName = filterModel.CarMarkName; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }