コード例 #1
0
ファイル: TeachersController.cs プロジェクト: Zaneta14/rsweb2
        // GET: Teachers
        public async Task <IActionResult> Index(string firstNameString, string lastNameString,
                                                string degreeString, string academicRankString)
        {
            IQueryable <Teacher> teachers      = _context.Teacher.AsQueryable();
            IQueryable <String>  degrees       = _context.Teacher.OrderBy(m => m.Degree).Select(m => m.Degree).Distinct();
            IQueryable <String>  academicRanks = _context.Teacher.OrderBy(m => m.AcademicRank).Select(m => m.AcademicRank).Distinct();

            if (!string.IsNullOrEmpty(firstNameString))
            {
                teachers = teachers.Where(t => t.FirstName == firstNameString);
            }
            if (!string.IsNullOrEmpty(lastNameString))
            {
                teachers = teachers.Where(t => t.LastName == lastNameString);
            }
            if (!string.IsNullOrEmpty(degreeString))
            {
                teachers = teachers.Where(t => t.Degree == degreeString);
            }
            if (!string.IsNullOrEmpty(academicRankString))
            {
                teachers = teachers.Where(t => t.AcademicRank == academicRankString);
            }
            var teachersFilterVM = new TeachersFilterViewModel
            {
                Teachers      = await teachers.ToListAsync(),
                Degrees       = new SelectList(await degrees.ToListAsync()),
                AcademicRanks = new SelectList(await academicRanks.ToListAsync())
            };

            return(View(teachersFilterVM));
        }
コード例 #2
0
        public IActionResult Index(TeachersFilterViewModel filterModel, int page)
        {
            TeachersFilterViewModel filter = HttpContext.Session.Get <TeachersFilterViewModel>(filterKey);

            if (filter != null)
            {
                filter.Name      = filterModel.Name;
                filter.Position  = filterModel.Position;
                filter.Education = filterModel.Education;

                HttpContext.Session.Remove(filterKey);
                HttpContext.Session.Set(filterKey, filter);
            }

            return(RedirectToAction("Index", new { page }));
        }
コード例 #3
0
        // GET: Teachers
        public async Task <IActionResult> Index(SortState sortState = SortState.TeachersSurNameAsc, int page = 1)
        {
            TeachersFilterViewModel filter = HttpContext.Session.Get <TeachersFilterViewModel>(filterKey);

            if (filter == null)
            {
                filter = new TeachersFilterViewModel
                {
                    Name      = string.Empty,
                    Position  = string.Empty,
                    Education = string.Empty,
                };
                HttpContext.Session.Set(filterKey, filter);
            }

            string key = $"{typeof(Teacher).Name}-{page}-{sortState}-{filter.Name}-{filter.Position}-{filter.Education}";

            if (!_cache.TryGetValue(key, out TeacherViewModel model))
            {
                model = new TeacherViewModel();

                IQueryable <Teacher> teachers = GetSortedTeachers(sortState, filter.Name, filter.Position, filter.Education);

                int count = teachers.Count();

                model.PageViewModel = new PageViewModel(page, count, pageSize);

                model.Teachers = count == 0
                    ? new List <Teacher>()
                    : teachers.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList();
                model.SortViewModel           = new SortViewModel(sortState);
                model.TeachersFilterViewModel = filter;

                _cache.Set(key, model);
            }
            return(View(model));
        }