Подтвердить что ты не робот

С# asp.net Почему существует разница между ClientID и UniqueID?

Я знаю, что ClientID используется для javascript и UniqueId для серверной части и что ClientID использует символ подчеркивания (_), а UniqueId использует знак доллара ($) в asp.net 2.0. Но я не понимаю, зачем использовать два разных идентификатора. Почему просто невозможно использовать символ подчеркивания ИЛИ использовать знак доллара как на стороне сервера, так и на стороне клиента. Может кто-нибудь объяснить это?

4b9b3361

Ответ 1

(В дополнение к моему первоначальному ответу выше)

Хорошо, поскольку вы, вероятно, знаете, что UniqueID используется с атрибутом name и ClientId с атрибутом id отображаемого HTML-тега. UniqueID использует двоеточие в качестве разделителя. С другой стороны ClientId использует символ подчеркивания как разделитель, потому что двоеточие не разрешено в именах переменных JavaScript. ClientID действительно также уникален на странице, поскольку UniqueID есть, но ClientID нацелен на обработку на стороне клиента и UniqueID для серверной стороны (довольно очевидный), последний особенно предназначен для маршрутизации данных и событий обратной передачи с помощью составных элементов управления

Однако я думаю, что некоторые рассуждения могут заключаться в том, что использование подчеркивания как разделителя в обычных идентификаторах управления является довольно распространенным поведением, и поэтому подчеркивание не может использоваться в UniqueID в качестве разделителя полномочий (если мы теоретически думаем об управлении с одним свойством), потому что вы могли бы Не делайте различия между элементами управления. С другой стороны, по тем же соображениям вы не можете использовать двоеточие в идентификаторах управления, Framework Page Framework не разрешает его, так что он гарантирует, что двоеточия не смогут попасть на идентификаторы ClientID (это из-за того, что JavaScript не нравится).

И по этим причинам двоеточие - довольно хороший выбор для использования в UniqueID, потому что метод FindControl может использовать его для навигации по дереву управления и локализации элементов управления (он может легко разделить UniqueID).

Ответ 2

this.UniqueID - это управляющее имя, добавленное ко всем именованным контейнерам, подумайте об этом как о полном контрольном имени. this.ClientID - значение который появится в атрибуте id элемента управления, это перевод uniqueid должен быть (хорошо почти) html-совместимым тегом id (ведущий подчеркивания не соответствуют требованиям html).