/// <summary>
        ///     Synchronously executes the <see cref="TagHelper" /> with the given <paramref name="context" /> and
        ///     <paramref name="output" />.
        /// </summary>
        /// <param name="context">Contains information associated with the current HTML tag.</param>
        /// <param name="output">A stateful HTML element used to generate an HTML tag.</param>
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            // State check
            if (output.TagMode != TagMode.SelfClosing)
            {
                throw new InvalidOperationException($"The '{HtmlTagName}' tag must use self closing mode.");
            }

            // Get information and build up context
            var generator = GetRealGenerator(context);
            var options   = GetRealOptions(context);

            CheckOptions(options);
            GetPagingInfo(context, out var currentPage, out var totalPage);

            var pagerContext = new PagerGenerationContext(currentPage, totalPage, options, ViewContext, GenerationMode);

            // Generate result
            var result = generator.GeneratePager(pagerContext);

            // Disable default element output
            output.SuppressOutput();

            // Append pager content
            output.PostElement.AppendHtml(result);
        }
Example #2
0
        /// <summary>
        ///     Create a new <see cref="PagerItemGenerationContext" /> from a base <see cref="PagerGenerationContext" />.
        /// </summary>
        /// <param name="baseContext">The base <see cref="PagerGenerationContext" /> instance.</param>
        /// <param name="pagerItem">The current page item.</param>
        /// <param name="pagerItemOptions">The current page item options.</param>
        public PagerItemGenerationContext([NotNull] PagerGenerationContext baseContext, PagerItem pagerItem,
                                          PagerItemOptions pagerItemOptions)
        {
            if (baseContext == null)
            {
                throw new ArgumentNullException(nameof(baseContext));
            }

            CurrentPage    = baseContext.CurrentPage;
            TotalPage      = baseContext.TotalPage;
            Options        = baseContext.Options;
            ViewContext    = baseContext.ViewContext;
            GenerationMode = baseContext.GenerationMode;

            PagerItem        = pagerItem;
            PagerItemOptions = pagerItemOptions;
        }