asp.net C#, Почему там различие между ClientID и UniqueID?

Я добавил это как комментарий к ответу nickf, но думал, что предложу его как ответ на своем собственном. Хорошие ответы все, кажется, изменение его, включая мой. Но так как мы не в зависимости от компилятора для оптимизации (если бы OP были, мы даже не сделали бы этого), тогда кипятящий это по сравнению с 3 ANDs к следующим средствам, что будут значения, где только 2 из этих 3 частей должны будут быть оценены. И если бы это делается в сценарии, это имело бы значение в противоположность скомпилированному коду.

(a != 1) && ((b > (a + p + 1)) || (b == (a + p))))

На основе комментария, я собираюсь добавить этот wrt этот являющийся лучше, чем И версия:

я предполагаю, что это зависит от того, больше ли Ваш истинный набор данных результатов, чем 50 процентов входных наборов. Чем чаще вход верен, тем лучше мое изменение будет. Так, с этим уравнением это похоже, И стиль будет лучше (по крайней мере, для моего набора входных данных 0-500).

22
задан Martijn 23 October 2009 в 08:12
поделиться

2 ответа

(В дополнение к моему исходному ответу выше)

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

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

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

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

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

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

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

12
ответ дан 29 November 2019 в 05:45
поделиться

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

6
ответ дан 29 November 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: