Ejemplo n.º 1
0
        private static TagBuilder PageCountAndLocationText(IPagedList list, PagedListRenderOptions options)
        {
            var text = new TagBuilder("a");

            SetInnerText(text, string.Format(options.PageCountAndCurrentLocationFormat, list.PageNumber, list.PageCount));

            return(WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled"));
        }
Ejemplo n.º 2
0
        private static TagBuilder Ellipses(PagedListRenderOptions options)
        {
            var a = new TagBuilder("a");

            AppendHtml(a, options.EllipsesFormat);

            return(WrapInListItem(a, options, "PagedList-ellipses", "disabled"));
        }
Ejemplo n.º 3
0
        private static TagBuilder ItemSliceAndTotalText(IPagedList list, PagedListRenderOptions options)
        {
            var text = new TagBuilder("a");

            SetInnerText(text, string.Format(options.ItemSliceAndTotalFormat, list.FirstItemOnPage, list.LastItemOnPage, list.TotalItemCount));

            return(WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled"));
        }
Ejemplo n.º 4
0
        private static TagBuilder ItemSliceAndTotalText(IPagedList list, PagedListRenderOptions options)
        {
            var text = new TagBuilder("a");

            text.AddCssClass("page-link");
            _ = text.InnerHtml.AppendHtml(string.Format(options.ItemSliceAndTotalFormat, list.FirstItemOnPage, list.LastItemOnPage, list.TotalItemCount));

            return(WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled"));
        }
Ejemplo n.º 5
0
        private static TagBuilder PageCountAndLocationText(IPagedList list, PagedListRenderOptions options)
        {
            var text = new TagBuilder("a");

            text.AddCssClass("page-link");
            _ = text.InnerHtml.AppendHtml(string.Format(options.PageCountAndCurrentLocationFormat, list.PageNumber, list.PageCount));

            return(WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled"));
        }
Ejemplo n.º 6
0
        private static TagBuilder Ellipses(PagedListRenderOptions options)
        {
            var a = new TagBuilder("a");

            {
                _ = a.InnerHtml.AppendHtml(options.EllipsesFormat);
            }
            a.AddCssClass("page-link");
            return(WrapInListItem(a, options, "PagedList-ellipses", "disabled"));
        }
Ejemplo n.º 7
0
		private static TagBuilder WrapInListItem(TagBuilder inner, PagedListRenderOptions options, params string[] classes)
		{
			var li = new TagBuilder("li");
			foreach (var @class in classes)
				li.AddCssClass(@class);
			if (options.FunctionToTransformEachPageLink != null)
				return options.FunctionToTransformEachPageLink(li, inner);
			li.InnerHtml = inner.ToString();
			return li;
		}
Ejemplo n.º 8
0
		private static TagBuilder Page(int i, IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
		{
			var format = options.FunctionToDisplayEachPageNumber
				?? (pageNumber => string.Format(options.LinkToIndividualPageFormat, pageNumber));
			var targetPageNumber = i;
			var page = new TagBuilder("a");
			page.SetInnerText(format(targetPageNumber));

			if (i == list.PageNumber)
				return WrapInListItem(page, options, "active");

			page.Attributes["href"] = generatePageUrl(targetPageNumber);
			return WrapInListItem(page, options);
		}
Ejemplo n.º 9
0
		private static TagBuilder First(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
		{
			const int targetPageNumber = 1;
			var first = new TagBuilder("a")
			            	{
			            		InnerHtml = string.Format(options.LinkToFirstPageFormat, targetPageNumber)
			            	};
			
			if (list.IsFirstPage)
				return WrapInListItem(first, options, "PagedList-skipToFirst", "disabled");

			first.Attributes["href"] = generatePageUrl(targetPageNumber);
			return WrapInListItem(first, options, "PagedList-skipToFirst");
		}
Ejemplo n.º 10
0
        private static TagBuilder WrapInListItem(TagBuilder inner, PagedListRenderOptions options, params string[] classes)
        {
            var li = new TagBuilder("li");

            foreach (var @class in classes)
            {
                li.AddCssClass(@class);
            }
            if (options.FunctionToTransformEachPageLink != null)
            {
                return(options.FunctionToTransformEachPageLink(li, inner));
            }
            AppendHtml(li, TagBuilderToString(inner));
            return(li);
        }
Ejemplo n.º 11
0
		private static TagBuilder Next(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
		{
			var targetPageNumber = list.PageNumber + 1;
			var next = new TagBuilder("a")
			           	{
			           		InnerHtml = string.Format(options.LinkToNextPageFormat, targetPageNumber)
			           	};
			next.Attributes["rel"] = "next";
			
			if (!list.HasNextPage)
				return WrapInListItem(next, options, "PagedList-skipToNext", "disabled");

			next.Attributes["href"] = generatePageUrl(targetPageNumber);
			return WrapInListItem(next, options, "PagedList-skipToNext");
		}
Ejemplo n.º 12
0
		private static TagBuilder Previous(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
		{
			var targetPageNumber = list.PageNumber - 1;
			var previous = new TagBuilder("a")
			               	{
			               		InnerHtml = string.Format(options.LinkToPreviousPageFormat, targetPageNumber)
			               	};
			previous.Attributes["rel"] = "prev";
			
			if (!list.HasPreviousPage)
				return WrapInListItem(previous, options, "PagedList-skipToPrevious", "disabled");

			previous.Attributes["href"] = generatePageUrl(targetPageNumber);
			return WrapInListItem(previous, options, "PagedList-skipToPrevious");
		}
Ejemplo n.º 13
0
        ///<summary>
        /// Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name="html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name="list">The PagedList to use as the data source.</param>
        ///<param name="generatePageUrl">A function that takes the index of the desired page and returns a URL-string that will load that page.</param>
        ///<param name="options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
		                                           IPagedList list,
		                                           Func<int, string> generatePageUrl,
		                                           PagedListRenderOptions options)
        {
            var listItemLinks = new StringBuilder();

            //first
            if (options.DisplayLinkToFirstPage)
                listItemLinks.Append(First(list, generatePageUrl, options.LinkToFirstPageFormat));

            //previous
            if (options.DisplayLinkToPreviousPage)
                listItemLinks.Append(Previous(list, generatePageUrl, options.LinkToPreviousPageFormat));

            //text
            if (options.DisplayPageCountAndCurrentLocation)
                listItemLinks.Append(PageCountAndLocationText(list, options.PageCountAndCurrentLocationFormat));

            //text
            if (options.DisplayItemSliceAndTotal)
                listItemLinks.Append(ItemSliceAndTotalText(list, options.ItemSliceAndTotalFormat));

            //page
            if (options.DisplayLinkToIndividualPages)
                foreach (var i in Enumerable.Range(0, list.PageCount))
                    listItemLinks.Append(Page(i, list, generatePageUrl, options.LinkToIndividualPageFormat));

            //next
            if (options.DisplayLinkToNextPage)
                listItemLinks.Append(Next(list, generatePageUrl, options.LinkToNextPageFormat));

            //last
            if (options.DisplayLinkToLastPage)
                listItemLinks.Append(Last(list, generatePageUrl, options.LinkToLastPageFormat));

            var ul = new TagBuilder("ul")
                     	{
                     		InnerHtml = listItemLinks.ToString()
                     	};

            var outerDiv = new TagBuilder("div");
            outerDiv.AddCssClass("PagedList-pager");
            outerDiv.InnerHtml = ul.ToString();

            return new MvcHtmlString(outerDiv.ToString());
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Enables ASP.NET MVC's unobtrusive AJAX feature. An XHR request will retrieve HTML from the clicked page and replace the innerHtml of the provided element ID.
        /// </summary>
        /// <param name="options">The preferred Html.PagedList(...) style options.</param>
        /// <param name="ajaxOptions">The ajax options that will put into the link</param>
        /// <returns>The PagedListRenderOptions value passed in, with unobtrusive AJAX attributes added to the page links.</returns>
        public static PagedListRenderOptions EnableUnobtrusiveAjaxReplacing(PagedListRenderOptions options, AjaxOptions ajaxOptions)
        {
            options.FunctionToTransformEachPageLink = (liTagBuilder, aTagBuilder) =>
            {
                var liClass = liTagBuilder.Attributes.ContainsKey("class") ? liTagBuilder.Attributes["class"] ?? "" : "";
                if (ajaxOptions != null && !liClass.Contains("disabled") && !liClass.Contains("active"))
                {
                    foreach (var ajaxOption in ajaxOptions.ToUnobtrusiveHtmlAttributes())
                    {
                        aTagBuilder.Attributes.Add(ajaxOption.Key, ajaxOption.Value.ToString());
                    }
                }

                liTagBuilder.InnerHtml = aTagBuilder.ToString();
                return(liTagBuilder);
            };
            return(options);
        }
Ejemplo n.º 15
0
        private static TagBuilder WrapInListItem(TagBuilder inner, PagedListRenderOptions options, params string[] classes)
        {
            var li = new TagBuilder("li");

            foreach (var @class in classes)
            {
                li.AddCssClass(@class);
            }
            if (options.FunctionToTransformEachPageLink != null)
            {
                return(options.FunctionToTransformEachPageLink(li, inner));
            }

            //新增:将AElementClasses中的样式添加到翻页链接中
            foreach (var c in options.AElementClasses ?? Enumerable.Empty <string>())
            {
                inner.AddCssClass(c);
            }

            li.InnerHtml = inner.ToString();
            return(li);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Enables ASP.NET MVC's unobtrusive AJAX feature. An XHR request will retrieve HTML from the clicked page and replace the innerHtml of the provided element ID.
        /// </summary>
        /// <param name="options">The preferred Html.PagedList(...) style options.</param>
        /// <param name="id">The element ID ("#my_id") of the element whose innerHtml should be replaced.</param>
        /// <returns>The PagedListRenderOptions value passed in, with unobtrusive AJAX attributes added to the page links.</returns>
        public static PagedListRenderOptions EnableUnobtrusiveAjaxReplacing(PagedListRenderOptions options, string id)
        {
            options.FunctionToTransformEachPageLink = (liTagBuilder, aTagBuilder) =>
            {
                var appendUnobtrusiveAjaxAttributes = true;
                if (liTagBuilder.Attributes.ContainsKey("class"))
                {
                    var liClasses = liTagBuilder.Attributes["class"].Split(' ');
                    appendUnobtrusiveAjaxAttributes = !liClasses.Contains("disabled") && !liClasses.Contains("active");
                }

                if (appendUnobtrusiveAjaxAttributes)
                {
                    aTagBuilder.Attributes.Add("data-ajax", "true");
                    aTagBuilder.Attributes.Add("data-ajax-method", "get");
                    aTagBuilder.Attributes.Add("data-ajax-mode", "replace");
                    aTagBuilder.Attributes.Add("data-ajax-update", id);
                }

                liTagBuilder.InnerHtml = aTagBuilder.ToString();
                return(liTagBuilder);
            };
            return(options);
        }
Ejemplo n.º 17
0
        private static TagBuilder Next(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var targetPageNumber = list.PageNumber + 1;
            var next             = new TagBuilder("a");

            AppendHtml(next, string.Format(options.LinkToNextPageFormat, targetPageNumber));
            next.Attributes["rel"] = "next";

            foreach (var c in options.PageClasses ?? Enumerable.Empty <string>())
            {
                next.AddCssClass(c);
            }

            if (!list.HasNextPage)
            {
                return(WrapInListItem(next, options, "PagedList-skipToNext", "disabled"));
            }

            next.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(next, options, "PagedList-skipToNext"));
        }
Ejemplo n.º 18
0
        private static TagBuilder Previous(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var targetPageNumber = list.PageNumber - 1;
            var previous         = new TagBuilder("a");

            AppendHtml(previous, string.Format(options.LinkToPreviousPageFormat, targetPageNumber));
            previous.Attributes["rel"] = "prev";

            foreach (var c in options.PageClasses ?? Enumerable.Empty <string>())
            {
                previous.AddCssClass(c);
            }

            if (!list.HasPreviousPage)
            {
                return(WrapInListItem(previous, options, "PagedList-skipToPrevious", "disabled"));
            }

            previous.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(previous, options, "PagedList-skipToPrevious"));
        }
Ejemplo n.º 19
0
        private static TagBuilder Page(int i, IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var format = options.FunctionToDisplayEachPageNumber
                         ?? (pageNumber => string.Format(options.LinkToIndividualPageFormat, pageNumber));
            var targetPageNumber = i;
            var page             = i == list.PageNumber ? new TagBuilder("span") : new TagBuilder("a");

            SetInnerText(page, format(targetPageNumber));

            foreach (var c in options.PageClasses ?? Enumerable.Empty <string>())
            {
                page.AddCssClass(c);
            }

            if (i == list.PageNumber)
            {
                return(WrapInListItem(page, options, "active"));
            }

            page.Attributes["href"] = generatePageUrl(targetPageNumber);

            return(WrapInListItem(page, options));
        }
Ejemplo n.º 20
0
        private static TagBuilder Page(int i, IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var format = options.FunctionToDisplayEachPageNumber
                         ?? (pageNumber => string.Format(options.LinkToIndividualPageFormat, pageNumber));
            var targetPageNumber = i;
            var page             = new TagBuilder("a");

            page.SetInnerText(format(targetPageNumber));

            if (i == list.PageNumber)
            {
                return(WrapInListItem(page, options, "active"));
            }

            page.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(page, options));
        }
Ejemplo n.º 21
0
        private static TagBuilder Next(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var targetPageNumber = list.PageNumber + 1;
            var next             = new TagBuilder("a")
            {
                InnerHtml = string.Format(options.LinkToNextPageFormat, targetPageNumber)
            };

            if (!list.HasNextPage)
            {
                return(WrapInListItem(next, options, "PagedList-skipToNext", "disabled"));
            }

            next.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(next, options, "PagedList-skipToNext"));
        }
Ejemplo n.º 22
0
        ///<summary>
        /// Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name="html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name="list">The PagedList to use as the data source.</param>
        ///<param name="generatePageUrl">A function that takes the index of the desired page and returns a URL-string that will load that page.</param>
        ///<param name="options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
                                                   IPagedList list,
                                                   Func <int, string> generatePageUrl,
                                                   PagedListRenderOptions options)
        {
            var listItemLinks = new StringBuilder();

            //first
            if (options.DisplayLinkToFirstPage)
            {
                listItemLinks.Append(First(list, generatePageUrl, options.LinkToFirstPageFormat));
            }

            //previous
            if (options.DisplayLinkToPreviousPage)
            {
                listItemLinks.Append(Previous(list, generatePageUrl, options.LinkToPreviousPageFormat));
            }

            //text
            if (options.DisplayPageCountAndCurrentLocation)
            {
                listItemLinks.Append(PageCountAndLocationText(list, options.PageCountAndCurrentLocationFormat));
            }

            //text
            if (options.DisplayItemSliceAndTotal)
            {
                listItemLinks.Append(ItemSliceAndTotalText(list, options.ItemSliceAndTotalFormat));
            }

            //page
            if (options.DisplayLinkToIndividualPages)
            {
                foreach (var i in Enumerable.Range(0, list.PageCount))
                {
                    listItemLinks.Append(Page(i, list, generatePageUrl, options.LinkToIndividualPageFormat));
                }
            }

            //next
            if (options.DisplayLinkToNextPage)
            {
                listItemLinks.Append(Next(list, generatePageUrl, options.LinkToNextPageFormat));
            }

            //last
            if (options.DisplayLinkToLastPage)
            {
                listItemLinks.Append(Last(list, generatePageUrl, options.LinkToLastPageFormat));
            }

            var ul = new TagBuilder("ul")
            {
                InnerHtml = listItemLinks.ToString()
            };

            var outerDiv = new TagBuilder("div");

            outerDiv.AddCssClass("PagedList-pager");
            outerDiv.InnerHtml = ul.ToString();

            return(new MvcHtmlString(outerDiv.ToString()));
        }
Ejemplo n.º 23
0
        private static TagBuilder Previous(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var targetPageNumber = list.PageNumber - 1;
            var previous         = new TagBuilder("a")
            {
                InnerHtml = string.Format(options.LinkToPreviousPageFormat, targetPageNumber)
            };

            if (!list.HasPreviousPage)
            {
                return(WrapInListItem(previous, options, "PagedList-skipToPrevious", "disabled"));
            }

            previous.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(previous, options, "PagedList-skipToPrevious"));
        }
Ejemplo n.º 24
0
		/// <summary>
		/// Enables ASP.NET MVC's unobtrusive AJAX feature. An XHR request will retrieve HTML from the clicked page and replace the innerHtml of the provided element ID.
		/// </summary>
		/// <param name="options">The preferred Html.PagedList(...) style options.</param>
        /// <param name="ajaxOptions">The ajax options that will put into the link</param>
		/// <returns>The PagedListRenderOptions value passed in, with unobtrusive AJAX attributes added to the page links.</returns>
        public static PagedListRenderOptions EnableUnobtrusiveAjaxReplacing(PagedListRenderOptions options, AjaxOptions ajaxOptions)
		{
			options.FunctionToTransformEachPageLink = (liTagBuilder, aTagBuilder) =>
				                                          {
																var liClass = liTagBuilder.Attributes.ContainsKey("class") ? liTagBuilder.Attributes["class"] ?? "" : "";
																if (ajaxOptions != null && !liClass.Contains("disabled") && !liClass.Contains("active"))
																{
																	foreach (var ajaxOption in ajaxOptions.ToUnobtrusiveHtmlAttributes())
																		aTagBuilder.Attributes.Add(ajaxOption.Key, ajaxOption.Value.ToString());
																}

																liTagBuilder.InnerHtml = aTagBuilder.ToString();
			                                          			return liTagBuilder;
			                                          	};
			return options;
		}
Ejemplo n.º 25
0
        ///<summary>
        ///	Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name = "list">The PagedList to use as the data source.</param>
        ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
        ///<param name = "options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
												   IPagedList list,
												   Func<int, string> generatePageUrl,
												   PagedListRenderOptions options)
        {
            var listItemLinks = new List<TagBuilder>();

            //first
            if (options.DisplayLinkToFirstPage)
                listItemLinks.Add(First(list, generatePageUrl, options.LinkToFirstPageFormat));

            //previous
            if (options.DisplayLinkToPreviousPage)
                listItemLinks.Add(Previous(list, generatePageUrl, options.LinkToPreviousPageFormat));

            //text
            if (options.DisplayPageCountAndCurrentLocation)
                listItemLinks.Add(PageCountAndLocationText(list, options.PageCountAndCurrentLocationFormat));

            //text
            if (options.DisplayItemSliceAndTotal)
                listItemLinks.Add(ItemSliceAndTotalText(list, options.ItemSliceAndTotalFormat));

            //page
            if (options.DisplayLinkToIndividualPages)
            {
                //calculate start and end of range of page numbers
                var start = 1;
                var end = list.PageCount;
                if (options.MaximumPageNumbersToDisplay.HasValue && list.PageCount > options.MaximumPageNumbersToDisplay)
                {
                    var maxPageNumbersToDisplay = options.MaximumPageNumbersToDisplay.Value;
                    start = list.PageNumber - maxPageNumbersToDisplay / 2;
                    if (start < 1)
                        start = 1;
                    end = maxPageNumbersToDisplay;
                    if ((start + end - 1) > list.PageCount)
                        start = list.PageCount - maxPageNumbersToDisplay + 1;
                }

                //if there are previous page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && start > 1)
                    listItemLinks.Add(Ellipses(options.EllipsesFormat));

                foreach (var i in Enumerable.Range(start, end))
                {
                    //show delimiter between page numbers
                    if (i > start && !string.IsNullOrWhiteSpace(options.DelimiterBetweenPageNumbers))
                        listItemLinks.Add(WrapInListItem(options.DelimiterBetweenPageNumbers));

                    //show page number link
                    listItemLinks.Add(options.FunctionToDisplayEachPageNumber == null
                                             ? Page(i, list, generatePageUrl, options.LinkToIndividualPageFormat)
                                             : Page(i, list, generatePageUrl, options.FunctionToDisplayEachPageNumber));
                }

                //if there are subsequent page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && (start + end - 1) < list.PageCount)
                    listItemLinks.Add(Ellipses(options.EllipsesFormat));
            }

            //next
            if (options.DisplayLinkToNextPage)
                listItemLinks.Add(Next(list, generatePageUrl, options.LinkToNextPageFormat));

            //last
            if (options.DisplayLinkToLastPage)
                listItemLinks.Add(Last(list, generatePageUrl, options.LinkToLastPageFormat));

            //append class to last item in list?
            if (!string.IsNullOrWhiteSpace(options.ClassToApplyToLastListItemInPager))
                listItemLinks.Last().AddCssClass(options.ClassToApplyToLastListItemInPager);

            //collapse all of the list items into one big string
            var listItemLinksString = listItemLinks.Aggregate(
                new StringBuilder(),
                (sb, listItem) => sb.Append(listItem.ToString()),
                sb=> sb.ToString()
                );

            var ul = new TagBuilder("ul")
                        {
                            InnerHtml = listItemLinksString
                        };

            var outerDiv = new TagBuilder("div");
            outerDiv.AddCssClass("PagedList-pager");
            outerDiv.AddCssClass("pagination");
            outerDiv.InnerHtml = ul.ToString();

            return new MvcHtmlString(outerDiv.ToString());
        }
Ejemplo n.º 26
0
        private static TagBuilder PageCountAndLocationText(IPagedList list, PagedListRenderOptions options)
        {
            var text = new TagBuilder("a");
            text.SetInnerText(string.Format(options.PageCountAndCurrentLocationFormat, list.PageNumber, list.PageCount));

            return WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled");
        }
Ejemplo n.º 27
0
        ///<summary>
        ///	Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name = "list">The PagedList to use as the data source.</param>
        ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
        ///<param name = "options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
                                                   IPagedList list,
                                                   Func <int, string> generatePageUrl,
                                                   PagedListRenderOptions options)
        {
            var listItemLinks = new StringBuilder();

            //first
            if (options.DisplayLinkToFirstPage)
            {
                listItemLinks.Append(First(list, generatePageUrl, options.LinkToFirstPageFormat));
            }

            //previous
            if (options.DisplayLinkToPreviousPage)
            {
                listItemLinks.Append(Previous(list, generatePageUrl, options.LinkToPreviousPageFormat));
            }

            //text
            if (options.DisplayPageCountAndCurrentLocation)
            {
                listItemLinks.Append(PageCountAndLocationText(list, options.PageCountAndCurrentLocationFormat));
            }

            //text
            if (options.DisplayItemSliceAndTotal)
            {
                listItemLinks.Append(ItemSliceAndTotalText(list, options.ItemSliceAndTotalFormat));
            }

            //page
            if (options.DisplayLinkToIndividualPages)
            {
                //calculate start and end of range of page numbers
                var start = 1;
                var end   = list.PageCount;
                if (options.MaximumPageNumbersToDisplay.HasValue && list.PageCount > options.MaximumPageNumbersToDisplay)
                {
                    var maxPageNumbersToDisplay = options.MaximumPageNumbersToDisplay.Value;
                    start = list.PageNumber - maxPageNumbersToDisplay / 2;
                    if (start < 1)
                    {
                        start = 1;
                    }
                    end = maxPageNumbersToDisplay;
                    if ((start + end - 1) > list.PageCount)
                    {
                        start = list.PageCount - maxPageNumbersToDisplay + 1;
                    }
                }

                //if there are previous page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && start > 1)
                {
                    listItemLinks.Append(Ellipses(options.EllipsesFormat));
                }

                foreach (var i in Enumerable.Range(start, end))
                {
                    //show delimiter between page numbers
                    if (i > start && !string.IsNullOrWhiteSpace(options.DelimiterBetweenPageNumbers))
                    {
                        listItemLinks.Append(options.DelimiterBetweenPageNumbers);
                    }

                    //show page number link
                    listItemLinks.Append(options.FunctionToDisplayEachPageNumber == null
                                                                                         ? Page(i, list, generatePageUrl, options.LinkToIndividualPageFormat)
                                                                                         : Page(i, list, generatePageUrl, options.FunctionToDisplayEachPageNumber));
                }

                //if there are subsequent page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && (start + end - 1) < list.PageCount)
                {
                    listItemLinks.Append(Ellipses(options.EllipsesFormat));
                }
            }

            //next
            if (options.DisplayLinkToNextPage)
            {
                listItemLinks.Append(Next(list, generatePageUrl, options.LinkToNextPageFormat));
            }

            //last
            if (options.DisplayLinkToLastPage)
            {
                listItemLinks.Append(Last(list, generatePageUrl, options.LinkToLastPageFormat));
            }

            var ul = new TagBuilder("ul")
            {
                InnerHtml = listItemLinks.ToString()
            };

            var outerDiv = new TagBuilder("div");

            outerDiv.AddCssClass("PagedList-pager");
            outerDiv.InnerHtml = ul.ToString();

            return(new MvcHtmlString(outerDiv.ToString()));
        }
Ejemplo n.º 28
0
        private static TagBuilder Last(IPagedList list, Func<int, string> generatePageUrl, Func<int, string> generateAjaxUrl, PagedListRenderOptions options)
        {
            var targetPageNumber = list.PageCount;
            var last = new TagBuilder("a")
                       	{
                       		InnerHtml = string.Format(options.LinkToLastPageFormat, targetPageNumber)
                       	};

            if (list.IsLastPage)
                return WrapInListItem(last, options, "PagedList-skipToLast", "disabled");

            last.Attributes["href"] = generatePageUrl(targetPageNumber);
            if (generateAjaxUrl != null) { last.Attributes[options.UnobtrusiveAjaxAttrName] = generateAjaxUrl(targetPageNumber); }
            return WrapInListItem(last, options, "PagedList-skipToLast");
        }
Ejemplo n.º 29
0
        private static TagBuilder Last(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            var targetPageNumber = list.PageCount;
            var last             = new TagBuilder("a");

            {
                _ = last.InnerHtml.AppendHtml(string.Format(options.LinkToLastPageFormat, targetPageNumber));
            }
            last.AddCssClass("page-link");
            if (list.IsLastPage)
            {
                return(WrapInListItem(last, options, "PagedList-skipToLast", "disabled"));
            }

            last.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(last, options, "PagedList-skipToLast"));
        }
        /// <summary>
        /// Enables ASP.NET MVC's unobtrusive AJAX feature. An XHR request will retrieve HTML from the clicked page and replace the innerHtml of the provided element ID.
        /// </summary>
        /// <param name="options">The preferred Html.PagedList(...) style options.</param>
        /// <param name="id">The element ID ("#my_id") of the element whose innerHtml should be replaced.</param>
        /// <returns>The PagedListRenderOptions value passed in, with unobtrusive AJAX attributes added to the page links.</returns>
        public static PagedListRenderOptions EnableUnobtrusiveAjaxReplacing(PagedListRenderOptions options, string id)
        {
            options.FunctionToTransformEachPageLink = (liTagBuilder, aTagBuilder) =>
                                                      	{
                                                      		var appendUnobtrusiveAjaxAttributes = true;
                                                            if (liTagBuilder.Attributes.ContainsKey("class"))
                                                            {
                                                                var liClasses = liTagBuilder.Attributes["class"].Split(' ');
                                                                appendUnobtrusiveAjaxAttributes = !liClasses.Contains("disabled") && !liClasses.Contains("active");
                                                            }

                                                            if (appendUnobtrusiveAjaxAttributes)
                                                            {
                                                                aTagBuilder.Attributes.Add("data-ajax", "true");
                                                                aTagBuilder.Attributes.Add("data-ajax-method", "get");
                                                                aTagBuilder.Attributes.Add("data-ajax-mode", "replace");
                                                                aTagBuilder.Attributes.Add("data-ajax-update", id);
                                                            }

                                                            liTagBuilder.InnerHtml = aTagBuilder.ToString();
                                                      		return liTagBuilder;
                                                      	};
            return options;
        }
Ejemplo n.º 31
0
        ///<summary>
        ///	Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name = "list">The PagedList to use as the data source.</param>
        ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
        ///<param name = "options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
                                                   IPagedList list,
                                                   Func <int, string> generatePageUrl,
                                                   PagedListRenderOptions options)
        {
            var listItemLinks = new List <TagBuilder>();

            //first
            if (options.DisplayLinkToFirstPage)
            {
                listItemLinks.Add(First(list, generatePageUrl, options));
            }

            //previous
            if (options.DisplayLinkToPreviousPage)
            {
                listItemLinks.Add(Previous(list, generatePageUrl, options));
            }

            //text
            if (options.DisplayPageCountAndCurrentLocation)
            {
                listItemLinks.Add(PageCountAndLocationText(list, options));
            }

            //text
            if (options.DisplayItemSliceAndTotal)
            {
                listItemLinks.Add(ItemSliceAndTotalText(list, options));
            }

            //page
            if (options.DisplayLinkToIndividualPages)
            {
                //calculate start and end of range of page numbers
                var start = 1;
                var end   = list.PageCount;
                if (options.MaximumPageNumbersToDisplay.HasValue && list.PageCount > options.MaximumPageNumbersToDisplay)
                {
                    var maxPageNumbersToDisplay = options.MaximumPageNumbersToDisplay.Value;
                    start = list.PageNumber - maxPageNumbersToDisplay / 2;
                    if (start < 1)
                    {
                        start = 1;
                    }
                    end = maxPageNumbersToDisplay;
                    if ((start + end - 1) > list.PageCount)
                    {
                        start = list.PageCount - maxPageNumbersToDisplay + 1;
                    }
                }

                //if there are previous page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && start > 1)
                {
                    listItemLinks.Add(Ellipses(options));
                }

                foreach (var i in Enumerable.Range(start, end))
                {
                    //show delimiter between page numbers
                    if (i > start && !string.IsNullOrWhiteSpace(options.DelimiterBetweenPageNumbers))
                    {
                        listItemLinks.Add(WrapInListItem(options.DelimiterBetweenPageNumbers));
                    }

                    //show page number link
                    listItemLinks.Add(Page(i, list, generatePageUrl, options));
                }

                //if there are subsequent page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && (start + end - 1) < list.PageCount)
                {
                    listItemLinks.Add(Ellipses(options));
                }
            }

            //next
            if (options.DisplayLinkToNextPage)
            {
                listItemLinks.Add(Next(list, generatePageUrl, options));
            }

            //last
            if (options.DisplayLinkToLastPage)
            {
                listItemLinks.Add(Last(list, generatePageUrl, options));
            }

            //append class to first item in list?
            if (!string.IsNullOrWhiteSpace(options.ClassToApplyToFirstListItemInPager))
            {
                listItemLinks.First().AddCssClass(options.ClassToApplyToFirstListItemInPager);
            }

            //append class to last item in list?
            if (!string.IsNullOrWhiteSpace(options.ClassToApplyToLastListItemInPager))
            {
                listItemLinks.Last().AddCssClass(options.ClassToApplyToLastListItemInPager);
            }

            //append classes to all list item links
            foreach (var li in listItemLinks)
            {
                foreach (var c in options.LiElementClasses ?? Enumerable.Empty <string>())
                {
                    li.AddCssClass(c);
                }
            }

            //collapse all of the list items into one big string
            var listItemLinksString = listItemLinks.Aggregate(
                new StringBuilder(),
                (sb, listItem) => sb.Append(listItem.ToString()),
                sb => sb.ToString()
                );

            var ul = new TagBuilder("ul")
            {
                InnerHtml = listItemLinksString
            };

            foreach (var c in options.UlElementClasses ?? Enumerable.Empty <string>())
            {
                ul.AddCssClass(c);
            }

            var outerDiv = new TagBuilder("div");

            foreach (var c in options.ContainerDivClasses ?? Enumerable.Empty <string>())
            {
                outerDiv.AddCssClass(c);
            }
            outerDiv.InnerHtml = ul.ToString();

            return(new MvcHtmlString(outerDiv.ToString()));
        }
Ejemplo n.º 32
0
        private static TagBuilder First(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            const int targetPageNumber = 1;
            var       first            = new TagBuilder("a")
            {
                InnerHtml = string.Format(options.LinkToFirstPageFormat, targetPageNumber)
            };

            if (list.IsFirstPage)
            {
                return(WrapInListItem(first, options, "PagedList-skipToFirst", "disabled"));
            }

            first.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(first, options, "PagedList-skipToFirst"));
        }
Ejemplo n.º 33
0
        ///<summary>
        ///	Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name = "list">The PagedList to use as the data source.</param>
        ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
        ///<param name = "generateAjaxUrl">A function that takes the page number of the desired page and returns a URL-string that using for unobtrusive ajax.</param>
        ///<param name = "options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
												   IPagedList list,
                                                   Func<int, string> generatePageUrl,
                                                   Func<int, string> generateAjaxUrl,
												   PagedListRenderOptions options)
        {
            if (options.Display == PagedListDisplayMode.Never || (options.Display == PagedListDisplayMode.IfNeeded && list.PageCount <= 1))
                return null;

            var listItemLinks = new List<TagBuilder>();

            //calculate start and end of range of page numbers
            var firstPageToDisplay = 1;
            var lastPageToDisplay = list.PageCount;
            var pageNumbersToDisplay = lastPageToDisplay;
            if (options.MaximumPageNumbersToDisplay.HasValue && list.PageCount > options.MaximumPageNumbersToDisplay)
            {
                // cannot fit all pages into pager
                var maxPageNumbersToDisplay = options.MaximumPageNumbersToDisplay.Value;
                firstPageToDisplay = list.PageNumber - maxPageNumbersToDisplay / 2;
                if (firstPageToDisplay < 1)
                    firstPageToDisplay = 1;
                pageNumbersToDisplay = maxPageNumbersToDisplay;
                lastPageToDisplay = firstPageToDisplay + pageNumbersToDisplay - 1;
                if (lastPageToDisplay > list.PageCount)
                    firstPageToDisplay = list.PageCount - maxPageNumbersToDisplay + 1;
            }

            //first
            if (options.DisplayLinkToFirstPage == PagedListDisplayMode.Always || (options.DisplayLinkToFirstPage == PagedListDisplayMode.IfNeeded && firstPageToDisplay > 1))
                listItemLinks.Add(First(list, generatePageUrl, generateAjaxUrl, options));

            //previous
            if (options.DisplayLinkToPreviousPage == PagedListDisplayMode.Always || (options.DisplayLinkToPreviousPage == PagedListDisplayMode.IfNeeded && !list.IsFirstPage))
                listItemLinks.Add(Previous(list, generatePageUrl, generateAjaxUrl, options));

            //text
            if (options.DisplayPageCountAndCurrentLocation)
                listItemLinks.Add(PageCountAndLocationText(list, options));

            //text
            if (options.DisplayItemSliceAndTotal)
                listItemLinks.Add(ItemSliceAndTotalText(list, options));

            //page
            if (options.DisplayLinkToIndividualPages)
            {
                //if there are previous page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && firstPageToDisplay > 1)
                    listItemLinks.Add(Ellipses(options));

                foreach (var i in Enumerable.Range(firstPageToDisplay, pageNumbersToDisplay))
                {
                    //show delimiter between page numbers
                    if (i > firstPageToDisplay && !string.IsNullOrWhiteSpace(options.DelimiterBetweenPageNumbers))
                        listItemLinks.Add(WrapInListItem(options.DelimiterBetweenPageNumbers));

                    //show page number link
                    listItemLinks.Add(Page(i, list, generatePageUrl, generateAjaxUrl, options));
                }

                //if there are subsequent page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && (firstPageToDisplay + pageNumbersToDisplay - 1) < list.PageCount)
                    listItemLinks.Add(Ellipses(options));
            }

            //next
            if (options.DisplayLinkToNextPage == PagedListDisplayMode.Always || (options.DisplayLinkToNextPage == PagedListDisplayMode.IfNeeded && !list.IsLastPage))
                listItemLinks.Add(Next(list, generatePageUrl, generateAjaxUrl, options));

            //last
            if (options.DisplayLinkToLastPage == PagedListDisplayMode.Always || (options.DisplayLinkToLastPage == PagedListDisplayMode.IfNeeded && lastPageToDisplay < list.PageCount))
                listItemLinks.Add(Last(list, generatePageUrl, generateAjaxUrl, options));

            if(listItemLinks.Any())
            {
                //append class to first item in list?
                if (!string.IsNullOrWhiteSpace(options.ClassToApplyToFirstListItemInPager))
                    listItemLinks.First().AddCssClass(options.ClassToApplyToFirstListItemInPager);

                //append class to last item in list?
                if (!string.IsNullOrWhiteSpace(options.ClassToApplyToLastListItemInPager))
                    listItemLinks.Last().AddCssClass(options.ClassToApplyToLastListItemInPager);

                //append classes to all list item links
                foreach (var li in listItemLinks)
                    foreach (var c in options.LiElementClasses ?? Enumerable.Empty<string>())
                        li.AddCssClass(c);
            }

            //collapse all of the list items into one big string
            var listItemLinksString = listItemLinks.Aggregate(
                new StringBuilder(),
                (sb, listItem) => sb.Append(listItem.ToString()),
                sb=> sb.ToString()
                );

            var ul = new TagBuilder("ul")
                        {
                            InnerHtml = listItemLinksString
                        };
            foreach (var c in options.UlElementClasses ?? Enumerable.Empty<string>())
                ul.AddCssClass(c);

            var outerDiv = new TagBuilder("div");
            foreach(var c in options.ContainerDivClasses ?? Enumerable.Empty<string>())
                outerDiv.AddCssClass(c);
            outerDiv.InnerHtml = ul.ToString();

            return new MvcHtmlString(outerDiv.ToString());
        }
Ejemplo n.º 34
0
 ///<summary>
 ///	Displays a configurable paging control for instances of PagedList.
 ///</summary>
 ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
 ///<param name = "list">The PagedList to use as the data source.</param>
 ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
 ///<param name = "options">Formatting options.</param>
 ///<returns>Outputs the paging control HTML.</returns>
 public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
                                            IPagedList list,
                                            Func<int, string> generatePageUrl,
                                            PagedListRenderOptions options)
 {
     return PagedListPager(html, list, generatePageUrl, null, options);
 }
Ejemplo n.º 35
0
        ///<summary>
        ///	Displays a configurable paging control for instances of PagedList.
        ///</summary>
        ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
        ///<param name = "list">The PagedList to use as the data source.</param>
        ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
        ///<param name = "options">Formatting options.</param>
        ///<returns>Outputs the paging control HTML.</returns>
        public static HtmlString PagedListPager(this IHtmlHelper html,
                                                IPagedList list,
                                                Func <int, string> generatePageUrl,
                                                PagedListRenderOptions options)
        {
            if (options.Display == PagedListDisplayMode.Never || (options.Display == PagedListDisplayMode.IfNeeded && list.PageCount <= 1))
            {
                return(null);
            }

            var listItemLinks = new List <TagBuilder>();

            //calculate start and end of range of page numbers
            var firstPageToDisplay   = 1;
            var lastPageToDisplay    = list.PageCount;
            var pageNumbersToDisplay = lastPageToDisplay;

            if (options.MaximumPageNumbersToDisplay.HasValue && list.PageCount > options.MaximumPageNumbersToDisplay)
            {
                // cannot fit all pages into pager
                var maxPageNumbersToDisplay = options.MaximumPageNumbersToDisplay.Value;
                firstPageToDisplay = list.PageNumber - maxPageNumbersToDisplay / 2;
                if (firstPageToDisplay < 1)
                {
                    firstPageToDisplay = 1;
                }
                pageNumbersToDisplay = maxPageNumbersToDisplay;
                lastPageToDisplay    = firstPageToDisplay + pageNumbersToDisplay - 1;
                if (lastPageToDisplay > list.PageCount)
                {
                    firstPageToDisplay = list.PageCount - maxPageNumbersToDisplay + 1;
                }
            }

            //first
            if (options.DisplayLinkToFirstPage == PagedListDisplayMode.Always || (options.DisplayLinkToFirstPage == PagedListDisplayMode.IfNeeded && firstPageToDisplay > 1))
            {
                listItemLinks.Add(First(list, generatePageUrl, options));
            }

            //previous
            if (options.DisplayLinkToPreviousPage == PagedListDisplayMode.Always || (options.DisplayLinkToPreviousPage == PagedListDisplayMode.IfNeeded && !list.IsFirstPage))
            {
                listItemLinks.Add(Previous(list, generatePageUrl, options));
            }

            //text
            if (options.DisplayPageCountAndCurrentLocation)
            {
                listItemLinks.Add(PageCountAndLocationText(list, options));
            }

            //text
            if (options.DisplayItemSliceAndTotal)
            {
                listItemLinks.Add(ItemSliceAndTotalText(list, options));
            }

            //page
            if (options.DisplayLinkToIndividualPages)
            {
                //if there are previous page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && firstPageToDisplay > 1)
                {
                    listItemLinks.Add(Ellipses(options));
                }

                foreach (var i in Enumerable.Range(firstPageToDisplay, pageNumbersToDisplay))
                {
                    //show delimiter between page numbers
                    if (i > firstPageToDisplay && !string.IsNullOrWhiteSpace(options.DelimiterBetweenPageNumbers))
                    {
                        listItemLinks.Add(WrapInListItem(options.DelimiterBetweenPageNumbers));
                    }

                    //show page number link
                    listItemLinks.Add(Page(i, list, generatePageUrl, options));
                }

                //if there are subsequent page numbers not displayed, show an ellipsis
                if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && (firstPageToDisplay + pageNumbersToDisplay - 1) < list.PageCount)
                {
                    listItemLinks.Add(Ellipses(options));
                }
            }

            //next
            if (options.DisplayLinkToNextPage == PagedListDisplayMode.Always || (options.DisplayLinkToNextPage == PagedListDisplayMode.IfNeeded && !list.IsLastPage))
            {
                listItemLinks.Add(Next(list, generatePageUrl, options));
            }

            //last
            if (options.DisplayLinkToLastPage == PagedListDisplayMode.Always || (options.DisplayLinkToLastPage == PagedListDisplayMode.IfNeeded && lastPageToDisplay < list.PageCount))
            {
                listItemLinks.Add(Last(list, generatePageUrl, options));
            }

            if (listItemLinks.Any())
            {
                //append class to first item in list?
                if (!string.IsNullOrWhiteSpace(options.ClassToApplyToFirstListItemInPager))
                {
                    listItemLinks.First().AddCssClass(options.ClassToApplyToFirstListItemInPager);
                }

                //append class to last item in list?
                if (!string.IsNullOrWhiteSpace(options.ClassToApplyToLastListItemInPager))
                {
                    listItemLinks.Last().AddCssClass(options.ClassToApplyToLastListItemInPager);
                }

                //append classes to all list item links
                foreach (var li in listItemLinks)
                {
                    foreach (var c in options.LiElementClasses ?? Enumerable.Empty <string>())
                    {
                        li.AddCssClass(c);
                    }
                }
            }

            //collapse all of the list items into one big string
            var listItemLinksString = listItemLinks.Aggregate(
                new StringBuilder(),
                (sb, listItem) => sb.Append(TagBuilderToString(listItem)),
                sb => sb.ToString()
                );

            var ul = new TagBuilder("ul");

            AppendHtml(ul, listItemLinksString);
            foreach (var c in options.UlElementClasses ?? Enumerable.Empty <string>())
            {
                ul.AddCssClass(c);
            }

            var outerDiv = new TagBuilder("div");

            foreach (var c in options.ContainerDivClasses ?? Enumerable.Empty <string>())
            {
                outerDiv.AddCssClass(c);
            }
            AppendHtml(outerDiv, TagBuilderToString(ul));

            return(new HtmlString(TagBuilderToString(outerDiv)));
        }
Ejemplo n.º 36
0
        private static TagBuilder Ellipses(PagedListRenderOptions options)
        {
            var a = new TagBuilder("a")
                        {
                            InnerHtml = options.EllipsesFormat
                        };

            return WrapInListItem(a, options, "PagedList-ellipses", "disabled");
        }
Ejemplo n.º 37
0
        private static TagBuilder First(IPagedList list, Func <int, string> generatePageUrl, PagedListRenderOptions options)
        {
            const int targetPageNumber = 1;
            var       first            = new TagBuilder("a");

            AppendHtml(first, string.Format(options.LinkToFirstPageFormat, targetPageNumber));

            foreach (var c in options.PageClasses ?? Enumerable.Empty <string>())
            {
                first.AddCssClass(c);
            }

            if (list.IsFirstPage)
            {
                return(WrapInListItem(first, options, "PagedList-skipToFirst", "disabled"));
            }

            first.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(WrapInListItem(first, options, "PagedList-skipToFirst"));
        }
Ejemplo n.º 38
0
        private static TagBuilder ItemSliceAndTotalText(IPagedList list, PagedListRenderOptions options)
        {
            var text = new TagBuilder("a");
            text.SetInnerText(string.Format(options.ItemSliceAndTotalFormat, list.FirstItemOnPage, list.LastItemOnPage, list.TotalItemCount));

            return WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled");
        }