1、在Render方法中这样产生
protected override void Render(HtmlTextWriter writer)
{
  writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "4");
  writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
  writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
  writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
  writer.AddAttribute(HtmlTextWriterAttribute.Class, "navbody");
  writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:outset 2px");
  writer.RenderBeginTag(HtmlTextWriterTag.Table);
  writer.RenderBeginTag(HtmlTextWriterTag.Tr);
  writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
  writer.RenderBeginTag(HtmlTextWriterTag.Td);
  writer.RenderEndTag();
  writer.RenderEndTag();
  writer.RenderEndTag();
}
2、在在Render方法中这样产生
protected override void Render(HtmlTextWriter writer)
{
  writer.Write("<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" width=\"100%\" class=\"navbody\" style=\"border:outset 2px\">");
  writer.Write("</table>");
3、利用StringBuilder产生HTML代码字符串,然后利用LiteralControl产生,比如:
LiteralControl MyPage = new LiteralControl();
Page.Controls.Add(MyPage);
StringBuilder sb = new StringBuilder();
sb.Append("<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" width=\"100%\" class=\"navbody\" style=\"border:outset 2px\">");
sb.Append("</table>");
MyPage.Text = sb.ToString();大家说哪种方法好?谢谢!
}