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

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам