いくつかのテストの後、理由はセルフクロージングHtmlGenericControl
をサポートしていないようです。サーバー側では、は次のように扱われます。HtmlGenericControl("br")
<br runat="server"></br>
</br>
HTMLにはタグがないため、<br />
タグが2つあるため、ブラウザに表示されます。これを回避する良い方法は、次のように作成することHtmlGenericSelfCloseControl
です(C#コードについては申し訳ありませんが、VB.NETでこれを書き直すことに問題はありません)。
public class HtmlGenericSelfCloseControl : HtmlGenericControl
{
public HtmlGenericSelfCloseControl()
: base()
{
}
public HtmlGenericSelfCloseControl(string tag)
: base(tag)
{
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(HtmlTextWriter.TagLeftChar + this.TagName);
Attributes.Render(writer);
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
}
public override ControlCollection Controls
{
get { throw new Exception("Self closing tag can't have child controls"); }
}
public override string InnerHtml
{
get { return String.Empty; }
set { throw new Exception("Self closing tag can't have inner content"); }
}
public override string InnerText
{
get { return String.Empty; }
set { throw new Exception("Self closing tag can't have inner text"); }
}
}
そして代わりにそれを使用してください:
pDoc.Controls.Add(New Label With {.Text = "whatever"})
pDoc.Controls.Add(New HtmlGenericSelfCloseControl("br"))
より簡単な代替手段として(参照している場合Page
)、以下を使用してみることができますPage.ParseControl
。
pDoc.Controls.Add(New Label With {.Text = "whatever"})
pDoc.Controls.Add(Page.ParseControl("br"))