public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            var errorSummaryContext = new ErrorSummaryContext();

            using (context.SetScopedContextItem(typeof(ErrorSummaryContext), errorSummaryContext))
            {
                await output.GetChildContentAsync();
            }

            if (errorSummaryContext.Title == null &&
                errorSummaryContext.Description == null &&
                errorSummaryContext.Items.Count == 0)
            {
                output.SuppressOutput();
                return;
            }

            var tagBuilder = _htmlGenerator.GenerateErrorSummary(
                DisableAutoFocus,
                errorSummaryContext.Title?.Content ?? new HtmlString(ComponentGenerator.ErrorSummaryDefaultTitle),
                errorSummaryContext.Title?.Attributes,
                errorSummaryContext.Description?.Content,
                errorSummaryContext.Description?.Attributes,
                output.Attributes.ToAttributeDictionary(),
                errorSummaryContext.Items);

            output.TagName = tagBuilder.TagName;
            output.TagMode = TagMode.StartTagAndEndTag;

            output.Attributes.Clear();
            output.MergeAttributes(tagBuilder);
            output.Content.SetHtmlContent(tagBuilder.InnerHtml);
        }
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            await output.GetChildContentAsync();

            var prependErrorSummary = PrependErrorSummary ?? _options.PrependErrorSummaryToForms;

            if (!prependErrorSummary)
            {
                return;
            }

            var formErrorContext = (FormErrorContext)context.Items[typeof(FormErrorContext)];

            if (formErrorContext.Errors.Count == 0)
            {
                return;
            }

            var errorItems = formErrorContext.Errors.Select(i => new ErrorSummaryItem()
            {
                Content = i.Content,
                Href    = i.Href
            });

            var errorSummary = _htmlGenerator.GenerateErrorSummary(
                ComponentGenerator.ErrorSummaryDefaultDisableAutoFocus,
                titleContent: new HtmlString(ComponentGenerator.ErrorSummaryDefaultTitle),
                titleAttributes: null,
                descriptionContent: null,
                descriptionAttributes: null,
                attributes: null,
                items: errorItems);

            output.PreContent.AppendHtml(errorSummary);
        }
Пример #3
0
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            var errorSummaryContext = new ErrorSummaryContext();

            using (context.SetScopedContextItem(typeof(ErrorSummaryContext), errorSummaryContext))
            {
                await output.GetChildContentAsync();
            }

            if (errorSummaryContext.Title == null)
            {
                throw new InvalidOperationException("Missing <govuk-error-summary-title> element.");
            }

            var tagBuilder = _htmlGenerator.GenerateErrorSummary(
                errorSummaryContext.Title?.content,
                errorSummaryContext.Title?.attributes,
                errorSummaryContext.Description?.content,
                errorSummaryContext.Description?.attributes,
                output.Attributes.ToAttributesDictionary(),
                errorSummaryContext.Items);

            output.TagName = tagBuilder.TagName;
            output.TagMode = TagMode.StartTagAndEndTag;

            output.Attributes.Clear();
            output.MergeAttributes(tagBuilder);
            output.Content.SetHtmlContent(tagBuilder.InnerHtml);
        }