Пример #1
0
        public IViewComponentResult Invoke(
            IPagination pageInfo,
            string searchTerm,
            string actionToCall)
        {
            int totalPages =
                (int)Math.Ceiling((double)pageInfo.TotalItems / pageInfo.PageSize);

            if (pageInfo.Current < 1)
            {
                pageInfo.Current = 1;
            }

            if (totalPages > 0 && pageInfo.Current > totalPages)
            {
                pageInfo.Current = totalPages;
            }

            int startPage = pageInfo.Current - 1 <= 0
                ? 1
                : pageInfo.Current - 1;

            int endPage = pageInfo.Current + 1 >= totalPages
                ? totalPages
                : pageInfo.Current + 1;

            if (startPage == 1)
            {
                endPage = totalPages >= 3 ? 3 : totalPages;
            }

            if (endPage == totalPages && pageInfo.Current == endPage)
            {
                startPage = startPage == 1 ? 1 : startPage - 1;
            }

            string previousDisabled =
                pageInfo.Current <= 1 ? "disabled" : string.Empty;
            string nextDisabled =
                pageInfo.Current >= totalPages ? "disabled" : string.Empty;

            PaginationComponentViewModel model = new PaginationComponentViewModel()
            {
                SearchTerm       = searchTerm,
                Current          = pageInfo.Current,
                StartPage        = startPage,
                EndPage          = endPage,
                PreviousDisabled = previousDisabled,
                NextDisabled     = nextDisabled,
                ActionToCall     = actionToCall
            };

            return(View("_Pagination", model));
        }
Пример #2
0
        public IViewComponentResult Invoke(IPagination pageInfo, string searchTerm)
        {
            int startPage = pageInfo.Current - 1 <= 0
                                ? 1
                                : pageInfo.Current - 1;

            int endPage = pageInfo.Current + 1 >= pageInfo.TotalPages
                                ? pageInfo.TotalPages
                                : pageInfo.Current + 1;

            if (startPage == 1)
            {
                endPage = pageInfo.TotalPages >= 3 ? 3 : pageInfo.TotalPages;
            }

            if (endPage == pageInfo.TotalPages && pageInfo.Current == endPage)
            {
                startPage = startPage == 1 ? 1 : startPage - 1;
            }

            string previousDisabled =
                pageInfo.Current == 1 ? "disabled" : string.Empty;
            string nextDisabled =
                pageInfo.Current == pageInfo.TotalPages ? "disabled" : string.Empty;

            PaginationComponentViewModel model = new PaginationComponentViewModel()
            {
                SearchTerm       = searchTerm,
                Current          = pageInfo.Current,
                Previous         = pageInfo.Previous,
                Next             = pageInfo.Next,
                StartPage        = startPage,
                EndPage          = endPage,
                PreviousDisabled = previousDisabled,
                NextDisabled     = nextDisabled
            };

            return(View("_Pagination", model));
        }