EDIT
Как отмечает @Adam в комментариях, есть нативный механизм jQuery, который в основном делает то же самое, что и хак в моем первоначальном ответе. Используя jQuery вы можете сделать
$('[id$=myButton]').click(function(){ alert('button clicked'); });
Мой хак изначально разрабатывался как обходной путь для ASP.NET, и я адаптировал его для первоначального ответа. Обратите внимание, что jQuery в основном делает то же самое под капотом. Однако я рекомендую использовать способ jQuery вместо реализации моего хака.
Оригинальный ответ оставлен для комментария контекста
Когда вы используете главную страницу, ASP.NET изменяет имена элементов управления на зависимых страницах. Вам нужно будет найти способ найти правильный элемент управления для добавления обработчика (при условии, что вы добавляете обработчик с помощью javascript).
Я использую эту функцию для этого:
function asp$( id, tagName ) {
var idRegexp = new RegExp( id + '$', 'i' );
var tags = new Array();
if (tagName) {
tags = document.getElementsByTagName( tagName );
}
else {
tags = document.getElementsByName( id );
}
var control = null;
for (var i = 0; i < tags.length; ++i) {
var ctl = tags[i];
if (idRegexp.test(ctl.id)) {
control = ctl;
break;
}
}
if (control) {
return $(control.id);
}
else {
return null;
}
}
Тогда вы можете сделать что-то вроде:
jQuery(asp$('myButton','input')).click ( function() { alert('button clicked'); } );
где у вас есть следующее на вашей дочерней странице
<asp:Button ID="myButton" runat="server" Text="Click Me" />