在我看来,TagBuilder和beta7之间似乎有一些重大的重大变化,而在公告回购中却没有提到它们。
具体来说,.ToString不再呈现标签生成器,它只返回类型的名称。以前,我们可以在HtmlHelper扩展中这样做来构建嵌套的html元素:
var li = new TagBuilder("li");
li.AddCssClass("inactive");
var span = new TagBuilder("span");
span.SetInnerText(somestring);
li.InnerHtml = span.ToString();.InnerHtml现在不再接受字符串,因为它现在是IHtmlContent
但是,由于.ToString()不呈现标记,这也不起作用:
li.InnerHtml = new HtmlString(span.ToString())它只是将类型的名称呈现为"Microsoft.AspNet.Mvc.Rendering.TagBuilder“。
我没有看到TagBuilder上有任何新的方法来提供所需的功能。我遗漏了什么?现在如何使用TagBuilder构建复杂的嵌套html?
发布于 2015-09-06 09:20:12
因为TagBuilder现在实现了IHtmlContent,所以您应该能够直接使用它,而无需执行.ToString()。
var li = new TagBuilder("li");
li.AddCssClass("inactive");
var span = new TagBuilder("span");
span.SetInnerText(somestring);
li.InnerHtml = span;当前在Beta 7中实现的真正问题是,没有一种简单的方法可以将两个子标记生成器内容附加到父标记构建器中。您可以跟踪关于GitHub的讨论。
目前的建议是使InnerHtml不可分配,而是支持Append。这是针对在Beta 8中实现的。
Beta 7中的解决方法是使用StringWriter调用parent.WriteTo,将其转换为string。
发布于 2016-04-13 07:53:17
使用MVC 6,在编写本报告时,Tagbuiler.InnerHtml确实没有设置器了。它有一些方法来追加元素。例如,你可以写:
var container = new TagBuilder("div");
var input = new TagBuilder("input");
container.InnerHtml.AppendHtml(input);发布于 2018-02-12 11:02:26
失去了span.SetInnerText(somestring);,现在可以这样做了
span.InnerHtml.SetContent(somestring);
使用Microsoft.AspNetCore.Html.HtmlContentBuilderExtensions。
这是从AspNetCore 2.0.1的4.7的角度来看的。
https://stackoverflow.com/questions/32416425
复制相似问题