0

我是编写自定义 ASP.NET 服务器控件的新手,遇到以下问题:

我有一个继承自System.Web.UI.HtmlControls.HtmlGenericControl. 我重写了控件的 Render 方法,使用HtmlTextWriter来发出一些自定义 HTML(基本上是TD带有一些自定义属性的标记),然后调用案例类的 Render 方法。

使用控件:

<dc:Header id="header1" runat="Server" DataColumn="MemberNumber" Width="30%">Member Number</dc:Header >

问题是,当我查看呈现的 HTML 时,服务器标记也会发送到客户端(紧跟在TD标记之后):

<dc:Header id="ctl00_ContentPlaceHolder_testData1_testData1_header1">Member Number</dc:Header>

我该如何防止这种情况发生?

4

1 回答 1

2

RenderBeginTag基本的渲染方法在and中发出标记名,RenderEndTag()如果您自己进行渲染,请不要调用它。如果你能帮助它,我也不会继承HtmlGenericControl,只是继承WebControl或者Control即使你不需要任何WebControl属性。

正常的Render()方法是这样做的:

protected override void Render(HtmlTextWriter writer)
{
   RenderBeginTag(writer);
   RenderContents(writer);
   RenderEndTag(writer);
}

只要你调用你需要的,可能RenderContents()在你的情况下,不需要调用base.Render(writer).

如果您仍想覆盖,请HtmlGenericControl务必设置TagName属性

于 2010-02-19T12:43:55.413 回答