【发布时间】:2011-08-18 15:59:51
【问题描述】:
我正在使用一个自定义 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)
【问题讨论】:
标签: asp.net web-controls