2011-05-04 68 views
1

我正在使用Render方法被覆盖的自定义Web控件。覆盖渲染方法时的客户端ID

我的问题是,呈现的控件的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> 

(这是,如果我提出了一个DIV ID为WebControl1和RUNAT =“服务器”是什么,就可以产生)

我能做些什么来实现呢?

编辑

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

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

在容器控制RenderControl方法重写如下:

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

回答

2

使用的UniqueID为HtmlTextWriterAttribute.Id代替客户端ID。