Подкачки с asp.net mvc C#

Здравствуйте, это мой код, где я выдал постраничное представление:

<div style="float: right;">
        <%= Html.RouteLink("<<", new { page = 1 }, new { title = "first page" })%>
        <% if (this.Model.HasPreviousPage)
           {%>

        <%= Html.RouteLink("<", new { page = (Model.PageIndex - 1) }, new { title = "previous page"})%>
        <%} %>

        <%  
            for (int i = 1; i <= this.Model.PageIndex + 2; i++)
            { if(i <= this.Model.TotalPages){
                 %>

        <%= Html.ActionLink(Convert.ToString(i), "Overview", new { page = i }, new { title = i + " page"})%>
        <% }}%>

        <% if (this.Model.HasNextPage)
           {%>

        <%= Html.RouteLink(">", new { page = (Model.PageIndex + 1) }, new { title = "next page"})%>
        <%} %>
        <%= Html.RouteLink(">>", new { page = Model.TotalPages }, new { title = "last page" })%>
    </div>

это выглядит так:

<< 1 2 3 > >>

Я хочу показать всегда только две страницы до и после выбранной страницы. Если я буду на странице 4, я увижу все 3 страницы раньше, как это.

<< < 1 2 3 **4** > >>

Как я могу это сделать, помогите мне, пожалуйста.. я сейчас немного в запасе, не знаю, как манипулировать этим.

моя модель имеет следующие данные для подкачки:

  /// <summary>
        /// Gets the boolean value of previous page
        /// </summary>
        public bool HasPreviousPage
        {
            get
            {
                return (PageIndex > 1);
            }
        }

        /// <summary>
        /// Gets the boolean value of next page
        /// </summary>
        public bool HasNextPage
        {
            get
            {
                return (PageIndex + 1 <= TotalPages);
            }
        }

        /// <summary>
        /// gets total pages of overview.aspx
        /// </summary>
        public int TotalPages
        {
            get
            {
                return _totalPages;
            }
            set
            {
                _totalPages = value;
            }
        }

        /// <summary>
        /// gets total count 
        /// </summary>
        public int TotalCount
        {
            get
            {
                return _totalCount;
            }
            set
            {
                _totalCount = value;
            }
        }

        /// <summary>
        /// gets actual page index
        /// </summary>
        public int PageIndex
        {
            get
            {
                return _pageIndex;
            }
            set
            {
                _pageIndex = value;
            }
        }

        /// <summary>
        /// gets page size
        /// </summary>
        public int PageSize
        {
            get
            {
                return _pageSize;
            }
            set
            {
                _pageSize = value;
            }
        }




 PageSize = 5;
                PageIndex = page;
                TotalCount = Threads.Count;
                TotalPages = TotalCount / PageSize;

                int pageResult = 0;
                for (int counter = 1; pageResult < this.TotalCount; counter++)
                {
                    pageResult = counter * this.PageSize;
                    TotalPages = counter;
                }

                FirstThreads = new List<Thread>();
                FirstThreads.AddRange(Threads.Skip<Thread>((PageIndex - 1) * PageSize).Take<Thread>(PageSize));

1 ответ

Решение

Ну, во-первых, ваш взгляд довольно сложный.

Почему бы не использовать метод HTML Extension для упрощения как пользовательского интерфейса, так и пейджинга?

Вокруг множество примеров, мне лично нравится этот.

Другие вопросы по тегам