C # asp.net Почему существует разница между ClientID и UniqueID? - PullRequest
22 голосов
/ 23 октября 2009

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

Ответы [ 2 ]

12 голосов
/ 23 октября 2009

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

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

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

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

6 голосов
/ 23 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...