Я могу придумать три варианта решения этой проблемы. Первый, внедряющий javascript с сервера с ClientID, как предполагает Дэйв, работает, но очень быстро запутывается. Я делал это некоторое время, но такая тесная связь на стороне сервера и на стороне клиента вызывает проблемы.
Второй - предоставить другой способ идентификации сущностей, такой как класс css. Это лучше, чем первый вариант, но дает вам множество посторонних определений классов, которые вы должны соблюдать.
Решением, которое я предпочитаю, является использование фреймворка javascript, такого как jQuery, который имеет механизм выбора. Таким образом, вы можете обойти мусор UniqueID с помощью некоторого умного выбора и обхода DOM.
Допустим, у вас есть элемент управления с именем myControl. Перед этим ASP.Net сгенерирует огромное пространство имен, поэтому при рендеринге не будет никаких коллизий идентификаторов. Но вы можете выбрать каждый myControl, выполнив $ ('[id $ = myControl]'), который выбирает каждый объект с идентификатором, заканчивающимся на myControl. Вероятно, есть аналогичные способы сделать это в других средах, но я недостаточно знаком с ними, чтобы привести пример.