Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Различные id для контрола 
V
    Опции темы
Idsa
Дата 26.9.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Просвятите, пожалуйста, в чем отличия Id, ClientId и UniqueId, и какой из них нужно использовать при написании JS-кода.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Bogdan1024
  Дата 26.9.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 1
Всего: 13



ClientID ASP.NET генерирует само, и оно иногда равно ClientID = UniqueID + ID (где UniqueID - айди пэрэрнт-контрола, ID - айди самого контрола), а иногда равно UniqueID. Но в любом случае юзать в жаваскриптах нужно именно ClientID так как оно "самое уникальное".


--------------------
user posted image
PM MAIL   Вверх
Mymik
Дата 27.9.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Idsa, 
ID -- ID на сервере
ClientID -- ID на клиенте
UniqueID -- ID в POST или GET запросе.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Idsa
Дата 11.10.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Всем спасибо за участие smile
С Id и ClientId теперь мне все понятно. Однако я до сих пор не понимаю, зачем же все-таки понадобилось введение UniqueId?

Цитата

ClientID - уникальный идентификатор, назначенный элементу управления оболочкой страницы ASP.NET и представленный клиенту, как HTML ID атрибут. ClientID отличается от UniqueID тем, что UniqueID может содержать символ двоеточия (smile, который недопустим в HTML ID атрибуте (и не допускается в именах переменных в скрипте клиентской части).


Не получается связать все это в единое целое :(


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
tol05
Дата 12.10.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Для того, чтобы ты мог использовать в своем коде id-шники типа "m_Label", а asp.net все равно могла бы правильно строить дерево элементов, работать с ними и рендерить.

Поэтому:
1) тот ID который ты написал на странице (для обеспечения его уникальности) преобразуется в UniqueID.
Например твой Id "m_Label" превращается в "ctr00$ctr01$ctr03$m_Label"
2) на этапе рендеринга в UniqueID символы '$' заменяются на '_' и этот ID уже превращается в "ctr00_ctr01_ctr03_m_Label" и называется ClientID

Кстати, двоеточие было в ASP.NET 1.x теперь появились ECMA-script-ы и в ходу только звонкий долар!
а то уже многие в Европе стали забывать как он пишется...




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Idsa
Дата 12.10.2007, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



tol05, спасибо за ответ.
Если с первой частью я разобрался, то пункт №2 меня определенно смущает: зачем было введено 2 уникальных поля, когда, на мой взгляд, можно было ограничиться одним?

Это сообщение отредактировал(а) Idsa - 12.10.2007, 05:52


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
tol05
Дата 12.10.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



да потому что нельзя в браузер отправлять id-шники с символом '$'.
Браузер воспринимает его как служебный символ - параграф.

погугли и почитай сам

И нужно же было что-то принять как разделитель для id-шников в asp.net? Кроме '_' ? Вот и выбрали $
А браузеру его нельзя отправлять. Вот и рендерят все id-шники с заменой. И свойство сделали, чтоб ты видел реальный id своего контрола. Чтоб ты в скриптах его правильно писать мог и с request-а правильно считывал...


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Idsa
Дата 5.11.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(tol05 @  12.10.2007,  09:00 Найти цитируемый пост)
И нужно же было что-то принять как разделитель для id-шников в asp.net? Кроме '_' ?

А зачем? Есть id с '_', так зачем еще один id? Все равно не понимаю... :(


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Idsa
Дата 16.12.2007, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



А я так до сих пор и не понял :(
Ответьте, пожалуйста, на вопрос в предыдущем посте.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
tol05
Дата 16.12.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Есть страница Default.aspx 
Код

<body>
    <form id="form1" runat="server" method="get">
    <div>
    
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <asp:Button runat="server" ID="Button" />
        </ItemTemplate>
    </asp:Repeater>

    <!-- я же имею право так кнопку назвать, правда? -->
    <asp:Button runat="server" ID="Repeater1_ctl04_Button" />

    </div>
    </form>
</body>

с файлом Default.aspx.cs
Код

public partial class _Default : Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        int[] intArray = new int[]{1, 2, 3, 4, 5};
        Repeater1.DataSource = intArray;
        Repeater1.DataBind();
    }
}

в браузере такой код
Код

    <div>
   
            <input type="submit" name="Repeater1$ctl00$Button" value="" id="Repeater1_ctl00_Button" />
        
            <input type="submit" name="Repeater1$ctl01$Button" value="" id="Repeater1_ctl01_Button" />
        
            <input type="submit" name="Repeater1$ctl02$Button" value="" id="Repeater1_ctl02_Button" />
        
            <input type="submit" name="Repeater1$ctl03$Button" value="" id="Repeater1_ctl03_Button" />
        
            <input type="submit" name="Repeater1$ctl04$Button" value="" id="Repeater1_ctl04_Button" />
        

    <input type="submit" name="Repeater1_ctl04_Button" value="" id="Repeater1_ctl04_Button" />

    </div>

Рассуждаем "от противного" - нет UniqueID, только ClientID. От браузера пришел постбек с информацией : "нажата кнопка Repeater1_ctl04_Button". Как понять какая из двух (та, что последняя в репитере или отдельная)?


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Idsa
Дата 16.12.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



tol05, это как раз тот пример, которого мне не хватало smile
Спасибо! +1.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
tol05
Дата 16.12.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Цитата(Idsa @ 16.12.2007,  15:36)
tol05, это как раз тот пример, которого мне не хватало smile
Спасибо! +1.

Я рад, что эта "долгоиграющая" тема закрылась наконец.

За +1 отдельное спасибо! 

 smile 


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Idsa
Дата 17.12.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(tol05 @  16.12.2007,  20:19 Найти цитируемый пост)
+1 отдельное спасибо! 

Плюс не получилось поставить сразу, т. к. сработало ограничение на слишком частое плюсование одному человеку.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.