2010-01-13 2 views
1

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

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

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

или

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

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

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

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

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

ответ

1

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

0

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

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

А потом пишут, что внутри DIV.

Смежные вопросы