// GET: Admin/Pages public async System.Threading.Tasks.Task <ActionResult> Index(int?page, string keyword) { PageListVM pageListVM = await GetElementsAsync(page, keyword); ViewBag.PageSizes = new SelectList(Site.PageSizes()); return(View(pageListVM)); }
// GET: Admin/Pages public async Task <IActionResult> Index(string keyword, int?page, string orderby = "importance", string sort = "desc") { try { var vm = new PageListVM() { PageIndex = page ?? 1, PageSize = _config.GetValue <int>("Modules:Page:Administrator:PageSize"), Keyword = keyword, OrderBy = orderby, Sort = sort }; var query = _context.Pages.AsNoTracking().AsQueryable(); if (!string.IsNullOrEmpty(keyword)) { query = query.Where(d => d.Title.Contains(keyword) || d.Body.Contains(keyword)); } vm.TotalCount = await query.CountAsync(); var goSort = $"{orderby}_{sort}"; query = goSort switch { "view_asc" => query.OrderBy(s => s.ViewCount), "view_desc" => query.OrderByDescending(s => s.ViewCount), "title_asc" => query.OrderBy(s => s.Title), "title_desc" => query.OrderByDescending(s => s.Title), "date_asc" => query.OrderBy(s => s.CreatedDate), "date_desc" => query.OrderByDescending(s => s.CreatedDate), "importance_asc" => query.OrderBy(s => s.Importance), "importance_desc" => query.OrderByDescending(s => s.Importance), _ => query.OrderByDescending(s => s.Id), }; var pages = await query .Skip((vm.PageIndex - 1) *vm.PageSize) .Take(vm.PageSize).ProjectTo <PageVM>(_mapper.ConfigurationProvider).ToListAsync(); vm.Pages = new StaticPagedList <PageVM>(pages, vm.PageIndex, vm.PageSize, vm.TotalCount); ViewBag.PageSizes = new SelectList(Site.PageSizes()); return(View(vm)); } catch (Exception ex) { Serilog.Log.Error(ex, "页面列表读取错误:{@error}", ex.Message); // return null; throw; } }
private async Task <PageListVM> GetElementsAsync(int?page, string keyword) { var vm = new PageListVM() { Keyword = keyword, PageIndex = page ?? 1, PageSize = SettingsManager.Page.PageSize }; var query = _db.Pages.AsQueryable(); if (!string.IsNullOrEmpty(keyword)) { query = query.Where(d => d.Title.Contains(keyword)); } var pagelist = await query.OrderByDescending(d => d.Id).Skip((vm.PageIndex - 1) * vm.PageSize) .Take(vm.PageSize).ProjectTo <PageVM>().ToListAsync(); vm.TotalCount = await query.CountAsync(); vm.Pages = new StaticPagedList <PageVM>(pagelist, vm.PageIndex, vm.PageSize, vm.TotalCount);; return(vm); }