Доступ к asp: контент из кода позади - PullRequest
11 голосов
/ 29 сентября 2010

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

Есть что-то, чего я не вижу?

Ответы [ 2 ]

18 голосов
/ 29 сентября 2010

Вы не можете получить доступ к элементу управления контентом asp: непосредственно из вашего кода.Элемент управления содержимым не добавляется к иерархии элементов управления во время выполнения, поэтому он недоступен из кода, к которому можно добавить элементы управления во время выполнения.Чтобы добавить к нему элементы управления во время выполнения, необходимо добавить еще один контейнерный элемент управления в элемент управления содержимым и добавить к нему элементы управления (как вы это делали с элементом управления заполнителем).статья для получения дополнительной информации.

1 голос
/ 29 сентября 2010

Вы не можете получить доступ к элементу управления «leftCol» из-за кода на главной странице, потому что он является держателем для содержимого этой страницы, а код вашей домашней страницы не знает о его содержимом в момент введения… вы можете получить доступ только к нему. контролирует в этом контенте. Внедрение контента происходит в asp.net снизу вверх, поэтому содержимое вашей домашней страницы, в данном случае все, что находится между тегами <asp:Content ID="leftCol" ...> and </asp:Content>, помещается на местоХолдер главной страницы ...

ура

...