/// <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); }
/// <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; }