Доступ к asp: содержимое из кода
Хорошо, я опытный веб-разработчик, но иногда ASP.Net обманывает меня.
У меня есть главная страница в asp.net. Затем у меня есть страница, основанная на этой главной странице (home.aspx). Теперь в home.aspx.cs Я хочу получить доступ к элементам управления asp: content, чтобы программным образом добавлять элементы управления.
Aspx выглядит следующим образом:
<asp:Content ID="leftCol" ContentPlaceHolderID="cphLeftCol" Runat="Server">
<asp:PlaceHolder ID="phLeftCol" runat="server">
</asp:PlaceHolder>
</asp:Content>
Я бы ожидал, что я смогу ссылаться на "leftCol" из моего кода. Но это неизвестно.
Для тестирования я добавил свой собственный заполнитель "phLeftCol". Я могу ссылаться на это без проблем.
Есть ли что-то, чего я не вижу?
Ответы
Ответ 1
Вы не можете получить доступ к asp: Content control непосредственно из своего кода. Элемент управления содержимым не добавляется в иерархию управления во время выполнения, поэтому он недоступен из кода позади, чтобы добавлять элементы управления во время выполнения. Чтобы добавить элементы управления к нему во время выполнения, вам нужно добавить еще один элемент управления контейнера в элемент управления контентом и добавить к нему элементы управления (как это было сделано с контролем закладок).
Дополнительную информацию см. в статье MSDN.
Ответ 2
Вы не можете получить доступ к элементу управления "leftCol" из кода главной страницы, поскольку он является владельцем содержимого этой страницы, и код вашей домашней страницы не знает о его содержании в момент инъекции... вы можете получить доступ только контроля в этом контенте. Инъекция контента идет в asp.net снизу вверх, поэтому содержимое вашей домашней страницы, в этом случае все между тегами <asp:Content ID="leftCol" ...> and </asp:Content>
, появляется на местеHolder главной страницы...
приветствия