/// <summary>
        /// Create pager
        /// </summary>
        /// <param name="html">The HTML helper instance that this method extends.</param>
        /// <param name="page">Page that will be converted to an page</param>
        /// <param name="pagerOptions">PageOptions</param>
        /// <returns></returns>
        public static MvcHtmlString Pager(this HtmlHelper html, IPage page, IPagerOptions pagerOptions)
        {
            if (pagerOptions == null)
            {
                throw new ArgumentNullException("pagerOptions");
            }

            if (pagerOptions.ItemShowOrder == null)
            {
                throw new ArgumentNullException("pagerOptions.ItemShowOrder");
            }

            if (page == null || (!page.HasPaging && pagerOptions.HideIfNotPaged))
            {
                return(MvcHtmlString.Create(string.Empty));
            }

            if (!pagerOptions.UrlDisable)
            {
                if (string.IsNullOrWhiteSpace(pagerOptions.Url))
                {
                    pagerOptions.Url = Helper.GetCurrentUrlString(html);
                }
                else
                {
                    if (!Uri.TryCreate(pagerOptions.Url, UriKind.Absolute, out Uri uriResult))
                    {
                        throw new ArgumentException("Invalid Url. The Url does not start with http or https, or is invallid.", "pagerOptions.Url");
                    }
                }
            }

            return(new PagerBuilder(page, pagerOptions).Render());
        }
Пример #2
0
 internal PagerBuilder(IPage page, IPagerOptions pagerOptions)
 {
     _pagerOptions = pagerOptions ?? new PagerOptions();
     _page         = page ?? new EmptyPage();
 }