Подтвердить что ты не робот

Как правильно добавлять атрибуты при рендеринге с помощью HtmlTextWriter?

Я хочу добавить атрибут 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="#" onclick="location.href='http://www.google.de'; return false;">Google</a></li>
</ul>

Что пошло не так, и как я могу исправить эту проблему?

Пожалуйста, не отвечайте, что я могу собрать строку другим способом. Я хочу знать, как я могу добиться этого с помощью HtmlTextWriter

4b9b3361

Ответ 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="#" onclick="location.href='http://www.google.de'; return false;">Google</a></li>
</ul>