Есть много интересных способов сделать то, что вы хотите. Самый простой из них:
- сделать ClientIdMode вашего элемента управления ascx статическим
- на главной странице добавить вызов функции init, которая будет обрабатывать init для всех элементов управления ascx
например, если у вас есть элементы управления a1.ascx и b1.ascx, обернутые в
<div id="divA1">ascx markup ... </div>
, и это же b1.ascx, вы можете написать что-то вроде:
var site = {
init:function(){
if($('#divA1').length > 0)
{
// bind events for the a1.ascx here
}
if($('#divB1').length >0)
{
//bind events for a2
}
}
};
$(function(){
site.init();
});
--- обновление ----
если вы используете asp.net 3.5, вы можете попробовать следующее:
var site={
ascx1_init:function(clientId){
$('#'+clientId+'_Button1').live('click',function(){//button click code goes here});
},
ascx2_init:function(clientId){
$('#'+clientId+'_Button1').live('click',function(){//button click code goes here});
},
....
}
в каждом вашем ascx, добавьте следующую ссылку в конце функции page_load:
Me.Page.ClientScript.RegisterStartupScript(Me.GetType(),"_"+Me.ClientID,"site.ascx1_init('" & Me.ClientID & "');",True)
Я предполагаю, что вы используете vb.net. Таким образом, вы можете получить доступ ко всем серверным элементам управления asp.net в js и без проблем поддерживать один js