【问题标题】:Client ID When Overriding Render Method覆盖渲染方法时的客户端 ID
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2016-06-24
      • 2015-05-28
      • 2018-04-11
      • 1970-01-01
      • 2011-05-01
      • 2015-11-01
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多