В вашем JavaScript попробуйте использовать UniqueID вместо ClientID:
function UpdPanelUpdate(id) {
var obj = document.getElementById("<%= text.UniqueID%>");
obj.value = id;
__doPostBack("<%= button.UniqueID%>", "");
}
Дайте мне знать, если это работает.
Я подозреваю, что текстовое поле ID больше не соответствует ожидаемому. Первоначально идентификатор представляет собой «текст», однако, как только вы переместите эту страницу на главную страницу, все изменится. Поскольку элементы управления теперь содержатся в главной странице, их идентификаторы эффективно изменяются, чтобы показать это отношение. Таким образом, вместо того, чтобы идентификатор текстового поля представлял собой «текст», теперь он будет выглядеть примерно так: ctl00 $ cphBody $ text - где «ctl100» - это префикс идентификатора главной страницы, а «cphBody» - это значение, которое вы присвоили ContentPlaceHolderID этой страницы соответственно.
Конечно, из кода вы можете сделать this.text.Text = "new value" и напрямую получить к нему доступ. Все в порядке. Но попробуйте использовать FindControl, и вы заметите, что все становится запутанным. Самый простой способ действительно понять, что я описываю, это сделать на своей странице следующее, используя главную страницу:
- Установка точки останова при загрузке страницы
- Поднимите ваше непосредственное окно (CTRL + ALT + I)
- Введите это: ? This.text.ID (вы должны увидеть текст)
- Введите: ? This.text.ClientID (вы должны увидеть ctl00_cphBody_text)
- Введите: ? This.text.UniqueID (вы должны увидеть текст ctl00 $ cphBody $)
- Теперь проверьте результаты, полученные для шагов 3-5, с помощью FindControl. Используйте? This.FindControl ("текст") и "this.FindControl (" ctl00_cphBody_text ") и" this.FindControl ("ctl00 $ cphBody $ text") - все, кроме последнего, должны возвращать ноль.
Чтобы лучше понять это, я предлагаю прочитать эту статью , в частности раздел под названием «FindControl, JavaScript и Naming Containers».
РЕДАКТИРОВАТЬ: Я на самом деле не могу проверить функцию в данный момент, но мне интересно, относится ли то, что я написал о FindControl, к доступу JavaScript к элементу управления. На основании этой статьи кажется, что ClientID предлагается вместо UniqueID. Так что это может не сработать.