Идентификатор клиента при переопределении метода рендеринга - PullRequest
1 голос
/ 04 мая 2011

Я использую пользовательский веб-элемент управления, где метод 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)

1 Ответ

2 голосов
/ 04 мая 2011

Используйте UniqueID для HtmlTextWriterAttribute.Id вместо ClientID.

...