Что я делаю, так это помещаю скрипт на мою главную страницу (не во внешний файл), который состоит исключительно из определения объекта, подобного этому:
var Controls = {
'Name':<%="'" + txtNumberOfDrugsInKit.ClientID%>',
'OtherName':<%="'" + otherControl.ClientID%>'
};
Хитрость в том, что вы должны поместить это в заголовок, или вы не можете использовать его из внешних файлов, и поэтому вы должны добавить runat="server"
к объявлению элемента head. Это также объясняет, почему я использую объект, а не простые имена переменных; это минимизирует вероятность столкновения имен в другом месте (у меня есть только имя «Controls», о котором нужно беспокоиться).
Затем я могу использовать этот объект Controls во внешнем скрипте, например:
var OtherElement = document.getElementById(Controls.OtherName);
или
var jQueryObj = $('#' + Controls.OtherName);
Смотрите другой пример здесь:
Могу ли я рассчитывать на то, что ctl00_PagePlaceHolder_myId останется прежним?