Я использую пользовательский веб-элемент управления, где метод Render был переопределен.
Моя проблема заключается в том, что идентификатор отображаемого элемента управления не включает идентификаторы главных страниц и пользовательских элементов управления, в которых расположен элемент управления.
Это означает, что если мой метод рендеринга включает в себя следующее:
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 с идентификатором WebControl1 и runat = "server")
Что я могу сделать, чтобы достичь этого?
Редактировать
Я был неправ относительно того, когда это происходит. Когда я размещаю элемент управления прямо на странице, идентификатор в порядке (идентификатор, сгенерированный asp.net).
Однако проблема возникает, когда MyControl отображается из другого веб-элемента управления, который содержит коллекцию моих элементов управления.
В элементе управления контейнера метод RenderControl переопределяется следующим образом:
foreach (Control control in MyControls)
{
divControls.Controls.Add(control);
}
divControls.RenderControl(writer)