Отображается ли id элемента управления aspx всегда одинаковым в исходном HTML-коде?

0

Например, у меня есть текстовое поле aspx с id="txtkms" В html-представлении источника я вижу, что он отображается как ContentPlaceHolder1_Gridview1_txtkms_1 Мой вопрос: этот элемент управления txtkms всегда будет отображаться как ContentPlaceHolder1_Gridview1_txtkms_1 каждый раз, когда я запускаю страницу aspx в любом браузере или любой другой компьютер.

3 ответа

1
Лучший ответ

Идентификаторы, сгенерированные для элементов управления, фактически зависят только от ваших определенных параметров ИЛИ, если вы не указали какие-либо данные, а затем примените настройки по умолчанию.

В зависимости от того, что вы установили для свойства ClientIDMode для страниц/элементов управления, идентификаторы Control могут быть точно такими же, как вы добавляете в свою разметку, или можете добавлять идентификаторы ваших контейнеров именования, разделенные символом подчеркивания (_).

Например, когда вы устанавливаете ClientIDMode="Static", значение ClientID устанавливается в значение свойства ID, установленного в вашей разметке.

[ClientID - это идентификатор элемента управления для разметки HTML, который создается ASP.NET]

Кроме того, когда вы устанавливаете ClientIDMode="AutoID", значение ClientID генерируется путем объединения значений ID каждого родительского именованного контейнера с ID значением элемента управления. Кроме того, в сценариях привязки данных (таких как ретранслятор, GridView..), где отображаются несколько экземпляров элемента управления, перед значением ID элемента управления добавляется инкрементное значение. Каждый сегмент разделяется символом подчеркивания (_).

Значение по умолчанию ClientIDMode для страницы Predictable. Значением по умолчанию для ClientIDMode для элемента управления является Inherit.

Проверьте эту ссылку MSDN. Кроме того, проверьте эту ссылку для получения более подробной информации.

  • 0
    Я не указал какое-либо свойство ClientIDMode для страницы или элементов в Gridview. Я получаю ContentPlaceHolder1_Gridview1_txtkms_0 для txtkms с приращением значения ContentPlaceHolder1_Gridview1_txtkms_1 ..2 ... 3 и так далее. Теперь .. Я использую эти сто идентификаторов первых 5 строк. Пожалуйста, мой предыдущий вопрос. stackoverflow.com/q/18973570/2064292
  • 0
    Это ожидаемое поведение. Вы ничего не указали, значит будут использоваться настройки по умолчанию. Если вы ничего не указали, это не значит, что никакие настройки не применяются вообще. Настройки по умолчанию будут применяться в таких случаях. По умолчанию для элементов управления - Наследовать, режим генерации по умолчанию - Предсказуемый для элементов управления в элементах управления с привязкой к данным, как это происходит выше. Значение ClientID генерируется путем объединения значения ClientID родительского контейнера именования со значением ID. контроля с подчеркиванием символов. Проверьте ссылку MSDN, приведенную в моем ответе
Показать ещё 2 комментария
2

Я никогда не видел его изменения, но безопаснее передавать идентификатор ClientID на javascript, где вы его будете использовать...

  • 0
    Можно ли передать ClientId текстового поля в виде сетки и ClientId другого текстового поля в той же строке в функцию javascript?
  • 0
    <asp: TextBox ID = "txtrateperkm" runat = "server" OnBlur = "calc (x, y, z)"> </ asp: TextBox> a = id этого элемента управления b = является значением этого элемента управления (я думаю, что clac (this.value) будет работать) c = Id конкретного элемента управления в той же строке gridView.
0

Это лучше, если вы установили ClientIdMode = Static в свою веб-конфигурацию.

Вы можете даже использовать это:

Вы можете использовать концы jQuery с селектором:

$ ( 'Вход [ID = $ "myServerId"]')

Но помните, что такой селектор намного медленнее, чем выбор напрямую с id с помощью <% = id.ClientID%>.

http://jsperf.com/id-vs-ends-with

Это решение было получено от Gromer:

Каков наилучший способ справиться с идентификатором клиента ASP.NET

Ещё вопросы

Сообщество Overcoder
Наверх
Меню