【问题标题】:How to add attributes correctly upon rendering with a HtmlTextWriter?如何在使用 HtmlTextWriter 渲染时正确添加属性?
【发布时间】:2011-04-27 01:15:56
【问题描述】:

我想将 href 属性添加到链接元素。这是我的代码:

System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
using (System.IO.StringWriter stringWriter = new System.IO.StringWriter(stringBuilder))
{
 using (System.Web.UI.HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter))
 {

  htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Ul);
  htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Li);
  htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.A);
  htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.google.de");
  htmlTextWriter.Write("Google");
  htmlTextWriter.RenderEndTag();
  htmlTextWriter.RenderEndTag();


  htmlTextWriter.RenderEndTag();
 }
}

它呈现为:

<ul>
 <li><a>Google</a></li>
</ul>

这是我的预期。

<ul>
 <li><a href="http://www.google.de">Google</a></li>
</ul>

出了什么问题,我该如何解决这个问题?

请不要回答我可以用其他方式组装字符串。我想知道如何使用 HtmlTextWriter 实现这一目标

【问题讨论】:

    标签: c# asp.net htmltextwriter


    【解决方案1】:

    使用 HtmlTextWriter 时,您必须在添加标签名称之前添加属性。像这样:

      htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Ul);
      htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Li);
    
      htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.google.de");
      htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.A);
      htmlTextWriter.Write("Google");
      htmlTextWriter.RenderEndTag(); //A
    
      htmlTextWriter.RenderEndTag(); //LI
      htmlTextWriter.RenderEndTag(); //UL
    

    它会像这样呈现:

    <ul>
        <li><a href="http://www.google.de">Google</a></li>
    </ul>
    

    【讨论】:

    • 谢谢,没想到,但有道理;)
    • 是吗?我认为这根本没有意义!
    • @roryok 确实如此(也就是说)。 RenderBeginTag 方法实际上是渲染标签,所以后面指定属性是没用的。
    猜你喜欢
    • 2012-02-12
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2018-04-18
    • 1970-01-01
    • 2013-01-28
    • 2018-01-02
    相关资源
    最近更新 更多