示例#1
0
        public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func <int, string> pageUrl)
        {
            StringBuilder stringBuilder = new StringBuilder();

            if (pagingInfo.TotalPages != 0)
            {
                TagBuilder tagBuilder = new TagBuilder("a")
                {
                    InnerHtml = "Previous"
                };
                if (pagingInfo.CurrentPage == 1)
                {
                    tagBuilder.MergeAttribute("class", "prev-disabled");
                }
                else
                {
                    tagBuilder.MergeAttribute("href", pageUrl(pagingInfo.CurrentPage - 1));
                }
                stringBuilder.Append(tagBuilder.ToString());
                if (pagingInfo.TotalPages >= 1)
                {
                    TagBuilder tagBuilder1 = new TagBuilder("a")
                    {
                        InnerHtml = "1"
                    };
                    tagBuilder1.MergeAttribute("href", pageUrl(1));
                    if (pagingInfo.CurrentPage == 1)
                    {
                        tagBuilder1.MergeAttribute("class", "current");
                    }
                    stringBuilder.Append(tagBuilder1.ToString());
                }
                if (pagingInfo.TotalPages >= 2)
                {
                    TagBuilder tagBuilder2 = new TagBuilder("a")
                    {
                        InnerHtml = "2"
                    };
                    tagBuilder2.MergeAttribute("href", pageUrl(2));
                    if (pagingInfo.CurrentPage == 2)
                    {
                        tagBuilder2.MergeAttribute("class", "current");
                    }
                    stringBuilder.Append(tagBuilder2.ToString());
                }
                if (pagingInfo.CurrentPage > 5 && pagingInfo.TotalPages != 6)
                {
                    TagBuilder tagBuilder3 = new TagBuilder("span")
                    {
                        InnerHtml = "..."
                    };
                    tagBuilder3.MergeAttribute("class", "text");
                    stringBuilder.Append(tagBuilder3.ToString());
                }
                if (pagingInfo.CurrentPage > 2)
                {
                    int currentPage = pagingInfo.CurrentPage;
                }
                if (pagingInfo.CurrentPage <= 5)
                {
                    for (int i = 3; i < 8 && i <= pagingInfo.TotalPages; i++)
                    {
                        TagBuilder tagBuilder4 = new TagBuilder("a")
                        {
                            InnerHtml = i.ToString()
                        };
                        tagBuilder4.MergeAttribute("href", pageUrl(i));
                        if (i == pagingInfo.CurrentPage)
                        {
                            tagBuilder4.MergeAttribute("class", "current");
                        }
                        stringBuilder.Append(tagBuilder4.ToString());
                    }
                    if (pagingInfo.TotalPages > 7)
                    {
                        TagBuilder tagBuilder5 = new TagBuilder("span")
                        {
                            InnerHtml = "..."
                        };
                        tagBuilder5.MergeAttribute("class", "text");
                        stringBuilder.Append(tagBuilder5.ToString());
                    }
                }
                if (pagingInfo.CurrentPage > 5 && pagingInfo.CurrentPage + 5 > pagingInfo.TotalPages)
                {
                    int totalPages = pagingInfo.TotalPages - 4;
                    if (totalPages == 2)
                    {
                        totalPages++;
                    }
                    for (int j = totalPages; j <= pagingInfo.TotalPages; j++)
                    {
                        TagBuilder tagBuilder6 = new TagBuilder("a")
                        {
                            InnerHtml = j.ToString()
                        };
                        tagBuilder6.MergeAttribute("href", pageUrl(j));
                        if (j == pagingInfo.CurrentPage)
                        {
                            tagBuilder6.MergeAttribute("class", "current");
                        }
                        stringBuilder.Append(tagBuilder6.ToString());
                    }
                }
                if (pagingInfo.CurrentPage > 5 && pagingInfo.CurrentPage + 5 <= pagingInfo.TotalPages)
                {
                    for (int k = pagingInfo.CurrentPage; k < pagingInfo.CurrentPage + 5; k++)
                    {
                        TagBuilder tagBuilder7 = new TagBuilder("a")
                        {
                            InnerHtml = (k - 2).ToString()
                        };
                        tagBuilder7.MergeAttribute("href", pageUrl(k - 2));
                        if (k == pagingInfo.CurrentPage + 2)
                        {
                            tagBuilder7.MergeAttribute("class", "current");
                        }
                        stringBuilder.Append(tagBuilder7.ToString());
                    }
                    TagBuilder tagBuilder8 = new TagBuilder("span")
                    {
                        InnerHtml = "..."
                    };
                    tagBuilder8.MergeAttribute("class", "text");
                    stringBuilder.Append(tagBuilder8.ToString());
                }
                TagBuilder tagBuilder9 = new TagBuilder("a")
                {
                    InnerHtml = "Next"
                };
                if (pagingInfo.CurrentPage == pagingInfo.TotalPages)
                {
                    tagBuilder9.MergeAttribute("class", "next-disabled");
                }
                else
                {
                    tagBuilder9.MergeAttribute("href", pageUrl(pagingInfo.CurrentPage + 1));
                }
                stringBuilder.Append(tagBuilder9.ToString());
            }
            return(MvcHtmlString.Create(stringBuilder.ToString()));
        }