首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TagBuilder InnerHtml in ASP.NET 5 MVC 6

TagBuilder InnerHtml in ASP.NET 5 MVC 6
EN

Stack Overflow用户
提问于 2015-09-05 18:32:11
回答 6查看 25.6K关注 0票数 23

在我看来,TagBuilder和beta7之间似乎有一些重大的重大变化,而在公告回购中却没有提到它们。

具体来说,.ToString不再呈现标签生成器,它只返回类型的名称。以前,我们可以在HtmlHelper扩展中这样做来构建嵌套的html元素:

代码语言:javascript
复制
var li = new TagBuilder("li");
li.AddCssClass("inactive");
var span = new TagBuilder("span");
span.SetInnerText(somestring);
li.InnerHtml = span.ToString();

.InnerHtml现在不再接受字符串,因为它现在是IHtmlContent

但是,由于.ToString()不呈现标记,这也不起作用:

代码语言:javascript
复制
li.InnerHtml = new HtmlString(span.ToString())

它只是将类型的名称呈现为"Microsoft.AspNet.Mvc.Rendering.TagBuilder“。

我没有看到TagBuilder上有任何新的方法来提供所需的功能。我遗漏了什么?现在如何使用TagBuilder构建复杂的嵌套html?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-09-06 09:20:12

因为TagBuilder现在实现了IHtmlContent,所以您应该能够直接使用它,而无需执行.ToString()

代码语言:javascript
复制
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

票数 18
EN

Stack Overflow用户

发布于 2016-04-13 07:53:17

使用MVC 6,在编写本报告时,Tagbuiler.InnerHtml确实没有设置器了。它有一些方法来追加元素。例如,你可以写:

代码语言:javascript
复制
var container = new TagBuilder("div");
var input = new TagBuilder("input");

container.InnerHtml.AppendHtml(input);
票数 22
EN

Stack Overflow用户

发布于 2018-02-12 11:02:26

失去了span.SetInnerText(somestring);,现在可以这样做了

span.InnerHtml.SetContent(somestring);

使用Microsoft.AspNetCore.Html.HtmlContentBuilderExtensions

这是从AspNetCore 2.0.1的4.7的角度来看的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32416425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档