/// <summary> /// 生成最终的分页Html代码 /// </summary> /// <returns></returns> internal MvcHtmlString RenderPager() { //return null if total page count less than or equal to 1 if (_totalPageCount <= 1 && _pagerOptions.AutoHide) { return(MvcHtmlString.Create(CopyrightText)); } //Display error message if pageIndex out of range if ((_pageIndex > _totalPageCount && _totalPageCount > 0) || _pageIndex < 1) { return (MvcHtmlString.Create(string.Format("{0}<div style=\"color:red;font-weight:bold\">{1}</div>{0}", CopyrightText, _pagerOptions.PageIndexOutOfRangeErrorMessage))); } var pagerItems = new List <PagerItem>(); //First page if (_pagerOptions.ShowFirstLast) { AddFirst(pagerItems); } // Prev page if (_pagerOptions.ShowPrevNext) { AddPrevious(pagerItems); } if (_pagerOptions.ShowNumericPagerItems) { if (_pagerOptions.AlwaysShowFirstLastPageNumber && _startPageIndex > 1) { pagerItems.Add(new PagerItem("1", 1, false, PagerItemType.NumericPage)); } // more page before numeric page buttons if (_pagerOptions.ShowMorePagerItems && ((!_pagerOptions.AlwaysShowFirstLastPageNumber && _startPageIndex > 1) || (_pagerOptions.AlwaysShowFirstLastPageNumber && _startPageIndex > 2))) { AddMoreBefore(pagerItems); } // numeric page AddPageNumbers(pagerItems); // more page after numeric page buttons if (_pagerOptions.ShowMorePagerItems && ((!_pagerOptions.AlwaysShowFirstLastPageNumber && _endPageIndex < _totalPageCount) || (_pagerOptions.AlwaysShowFirstLastPageNumber && _totalPageCount > _endPageIndex + 1))) { AddMoreAfter(pagerItems); } if (_pagerOptions.AlwaysShowFirstLastPageNumber && _endPageIndex < _totalPageCount) { pagerItems.Add(new PagerItem(_totalPageCount.ToString(CultureInfo.InvariantCulture), _totalPageCount, false, PagerItemType.NumericPage)); } } // Next page if (_pagerOptions.ShowPrevNext) { AddNext(pagerItems); } //Last page if (_pagerOptions.ShowFirstLast) { AddLast(pagerItems); } var sb = new StringBuilder(); if (_ajaxPagingEnabled) { foreach (PagerItem item in pagerItems) { sb.Append(GenerateAjaxPagerElement(item)); } } else { foreach (PagerItem item in pagerItems) { sb.Append(GeneratePagerElement(item)); } } var tb = new TagBuilder(_pagerOptions.ContainerTagName); if (!string.IsNullOrEmpty(_pagerOptions.Id)) { tb.GenerateId(_pagerOptions.Id); } if (!string.IsNullOrEmpty(_pagerOptions.CssClass)) { tb.AddCssClass(_pagerOptions.CssClass); } if (!string.IsNullOrEmpty(_pagerOptions.HorizontalAlign)) { string strAlign = "text-align:" + _pagerOptions.HorizontalAlign.ToLower(); if (_htmlAttributes == null) { _htmlAttributes = new RouteValueDictionary { { "style", strAlign } } } ; else { if (_htmlAttributes.Keys.Contains("style")) { _htmlAttributes["style"] += ";" + strAlign; } } } tb.MergeAttributes(_htmlAttributes, true); if (_ajaxPagingEnabled) { var attrs = _ajaxOptions.ToUnobtrusiveHtmlAttributes(); attrs.Remove("data-ajax-url"); attrs.Remove("data-ajax-mode"); if (_ajaxOptions.EnablePartialLoading) { attrs.Add("data-ajax-partialloading", "true"); } if (_pageIndex > 1) { attrs.Add("data-ajax-currentpage", _pageIndex); } if (!string.IsNullOrWhiteSpace(_ajaxOptions.DataFormId)) { attrs.Add("data-ajax-dataformid", "#" + _ajaxOptions.DataFormId); } AddDataAttributes(attrs); tb.MergeAttributes(attrs, true); } if (_pagerOptions.ShowPageIndexBox) { if (!_ajaxPagingEnabled) { var attrs = new Dictionary <string, object>(); AddDataAttributes(attrs); tb.MergeAttributes(attrs, true); } sb.Append(BuildGoToPageSection()); } else { sb.Length -= _pagerOptions.PagerItemsSeperator.Length; } tb.InnerHtml = sb.ToString(); /* 注册客户端脚本 * string pagerScript = string.Empty; * const string ctxItemName = "_MvcPagerScriptRegistered"; * ViewContext viewCtx = _ajaxPagingEnabled ? _ajax.ViewContext : _html.ViewContext; * if (viewCtx.HttpContext.Items[ctxItemName] == null) * { * var page = viewCtx.HttpContext.CurrentHandler as Page; * var scriptUrl = (page ?? new Page()).ClientScript.GetWebResourceUrl(typeof (PagerHelper),"Webdiyer.WebControls.Mvc.MvcPager.min.js"); * pagerScript = "<script type=\"text/javascript\" src=\"" + scriptUrl + "\"></script>"; * viewCtx.HttpContext.Items[ctxItemName] = true; * }*/ return(MvcHtmlString.Create(CopyrightText + /*pagerScript +*/ tb.ToString(TagRenderMode.Normal) + CopyrightText)); }