覆盖渲染方法时的客户端ID

时间:2011-05-04 15:37:55

标签: asp.net web-controls

我正在使用自定义Web控件,其中Render方法被覆盖。

我的问题是,渲染控件的ID不包括控件所在的母版页和用户控件的ID。

这意味着如果我的渲染方法包含以下内容:

writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.RenderEndTag();

使用如下:

<somePrefix:MyWebControl ID="WebControl1" runat="server" />

然后控件将呈现为:

<div id="WebControl1"></div>

虽然我想要这样的东西:

<div id="ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolderMain_WebControl1"></div>

(如果我用ID WebControl1和runat =“server”建立一个div会产生什么)

我能做些什么来实现这个目标?

修改

发生这种情况时我错了。当我将控件直接放在页面中时,id很好(asp.net生成的id)。

但是,当MyControl从另一个Web控件呈现时会出现问题,该控件包含我的控件集合。

在容器控件中,RenderControl方法被覆盖如下:

foreach (Control control in MyControls)
{
   divControls.Controls.Add(control);
}
divControls.RenderControl(writer)

1 个答案:

答案 0 :(得分:2)

对HtmlTextWriterAttribute.Id使用UniqueID而不是ClientID。