Ejemplo n.º 1
0
        // 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));
        }
Ejemplo n.º 2
0
        // 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;
            }
        }
Ejemplo n.º 3
0
        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);
        }