Передача идентификатора элемента управления из одного веб-элемента управления в другой - PullRequest
1 голос
/ 13 января 2010

У меня есть пользовательский веб-элемент управления, который содержит множество других пользовательских элементов управления. Я хотел бы назвать эти встроенные элементы управления на основе идентификатора родительского пользовательского элемента управления.

Я пытаюсь этот код внутри основного элемента управления пользователя:

<myLibrary:myChildUserControl1 ID="<%=ID%>" runat="server" />

или

<myLibrary:myChildUserControl2 ID="<%=ID%>_OkButton" runat="server" />

В обоих случаях я получаю ошибку компилятора.

Обратите внимание, что у меня нет проблем с назначением идентификатора элемента управления обычным элементам HTML. Следующий код работает хорошо:

<div ID="<%=ID%>" >

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 13 января 2010

В ASP.NET идентификатор серверного элемента управления генерируется на основе его Именованного контейнера . Если вы хотите, чтобы ваши дочерние элементы управления генерировали идентификаторы на основе своего родителя, ваш родительский элемент управления должен реализовывать интерфейс INamingContainer

0 голосов
/ 13 января 2010

Вы не можете динамически генерировать идентификаторы на стороне сервера, как вы пытались выше. Только если бы вы были это может сработать программно, создав пользовательские элементы управления, но это тоже создает проблему. Клиентские идентификаторы могут быть сгенерированы, хотя; если он находится в пользовательском элементе управления, вы можете сделать это или добавить свойство в свой пользовательский элемент управления:

public string DIVID { get { return this.ClientID + "_div"; } }

А затем запишите это в DIV.

...