我已經嘗試了這兩種不同的方法..在論壇上這也不是很多。Taghelper使用Tagbuilder和stringbuilder呈現output.precontent的問題
我試圖創建一個自定義標籤幫助緩慢構建它,因爲我向前邁進。它產生一個動態菜單,但我沒有從字符串生成器得到正確的輸出。
我想產生這樣的precontent:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
,這對於postcontent:
</ul>
</div>
我打算添加爲output.precontent和output.postcontent。我還決定爲每個標籤使用tagbuilder方法,並將它們添加到一個stringbuilder,最後將其作爲前面提到的前提。這是我想出的。
StringBuilder PreContentSb = new StringBuilder();
StringBuilder PostContentSb = new StringBuilder();
TagBuilder divTag = new TagBuilder("div");
TagBuilder ul = new TagBuilder("ul");
divTag.MergeAttribute("class", "navbar - collapse collapse");
divTag.TagRenderMode = TagRenderMode.SelfClosing;
ul.MergeAttribute("class", "nav navbar - nav");
ul.TagRenderMode = TagRenderMode.SelfClosing;
PreContentSb.Append(' ', 12);
PreContentSb.Append(divTag.InnerHtml.ToString());
PreContentSb.Append(Environment.NewLine);
PreContentSb.Append(' ', 16);
PreContentSb.Append(ul.ToString());
PreContentSb.Append(Environment.NewLine);
output.PreContent.SetContent(PreContentSb.ToString());
PostContentSb.Append(' ', 16);
PostContentSb.Append("</ul>");
PreContentSb.Append(Environment.NewLine);
PostContentSb.Append(' ', 12);
PostContentSb.AppendLine("</div>");
PreContentSb.Append(Environment.NewLine);
output.PostContent.SetContent(PostContentSb.ToString());
的taghelper是隻在一個地方去,所以我想我會縮進那個地方與如啓動「PreContentSb.Append(」」,12);」 ..
我的問題得到的是,當我看着頁面的源代碼我得到,這些標籤如下:
Microsoft.Extensions.Internal.BufferedHtmlContent
 Microsoft.AspNet.Mvc.Rendering.TagBuilder
 </ul> </div>

的首先它不是呈現在所有tagbuilt標籤,其次代替引號和尖括號其顯示實際字符實體引用..
如何簡單顯示引號,尖括號?
最後如何渲染一個字符串構建器中的tagbuilder元素?
快速的問題 - 我如何使用的writeTo()將TagBuilder的內容添加到StringBuilder? (將對此投票) – si2030
var writer = new System.IO.StringWriter(); divTag.WriteTo(writer,new HtmlEncoder()); var s = writer.ToString(); – si2030