Вот как я справлялся с подобными проблемами в прошлом ...
Блок, подобный этому, помещается во внешний файл js, указанный в элементе управления ascx.
function UserControl() {
}
UserControl.prototype = {
DoStuff : function() {
var x = this.clientID;
window.alert(this.pnlSearchClientID);
},
TriggeredKey : function(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
if (keycode == 9) {
document.getElementById(this.pnlSearchClientID).style.visibility = 'hidden';
document.getElementById(this.pnlSearchClientID).style.display = 'none';
}
_dopostback();
},
pasteIntoInput : function() {
var text = document.getElementById(this.txtSearchClientID).value;
}
};
Блок, подобный этому, помещается в файл ascx:
<script type="text/javascript">
function UserControl<%=this.ClientID%>() {
this.pnlSearchClientID = <%=pnlSearch.ClientID%>;
this.txtSearchClientID = <%=txtSearch.ClientID%>;
}
UserControl<%=this.ClientID%> = UserControl.prototype;
</script>
А затем на странице, включая пользовательский элемент управления:
<script type="text/javascript">
var inst1 = new UserControl<%=instance.ClientID %>();
inst1.DoStuff();
</script>
Идея состоит в том, что у вас есть базовый класс с необходимой вам функциональностью, который используется всеми экземплярами пользовательского элемента управления. Затем производный класс для каждого экземпляра пользовательского элемента управления с новым конструктором, устанавливающим свойства для всей конкретной для экземпляра даты (т. Е. Идентификаторов элементов управления, составляющих пользовательский элемент управления). Базовый класс ссылается на эти свойства. Производный класс именуется с помощью ClientID пользовательского элемента управления, что делает его уникальным на странице.
У меня нет доступа к банкомату asp.net, поэтому, возможно, здесь есть ошибки ...