コード例 #1
0
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "div";
            output.Attributes.SetAttribute("class", "panel-body");
            var content = await output.GetChildContentAsync();
            var collectionContext = (InputCollectionContext)context.Items[typeof(InputCollectionTagHelper)];

            TextWriter newContent = new StringWriter();

            var table = new HtmlTags.HtmlTag("table")
                .AddClasses("table", "table-striped");

            var thead = new HtmlTags.HtmlTag("thead");
            var theadRow = new HtmlTags.HtmlTag("tr");

            var tbody = new HtmlTags.HtmlTag("tbody")
                .Attr("data-bind", "foreach: " + collectionContext.Name);
            var tbodyRow = new HtmlTags.HtmlTag("tr");

            newContent.Write(table.NoClosingTag());
            newContent.Write(thead.NoClosingTag());
            newContent.Write(theadRow.NoClosingTag());
            foreach (var contextItem in collectionContext.Items)
            {
                newContent.Write("<th>" + contextItem.Label + "</th>");
            }

            newContent.Write("</tr>");
            newContent.Write("</thead>");

            newContent.Write(tbody.NoClosingTag());
            newContent.Write(tbodyRow.NoClosingTag());

            var enc = NullHtmlEncoder.Create(new System.Text.Encodings.Web.TextEncoderSettings());
            foreach (var contextItem in collectionContext.Items)
            {
                newContent.Write("<td>");

                contextItem.Content.WriteTo(newContent, enc);
                newContent.Write("</td>");
            }
            
            newContent.Write("</tr>");
            newContent.Write("</tbody>");

            newContent.Write("</table>");

            output.Content.SetHtmlContent(newContent.ToString());
        }