2011-04-09 2 views
0

В веб-формах ASP.NET, когда элемент управления отображается на странице, идентификатор каждого поля изменяется с помощью ctrl01 по мере необходимости, чтобы избежать коллизий (иначе myField становится ctrl01 $ myField или еще что-то).Как ASP.NET Webforms определяет HTML-имя элемента управления?

Мне было интересно, где можно найти подробную информацию о том, как работает сам алгоритм, или где он может быть, я могу его найти. Я предполагаю, что INamingContainer имеет к этому какое-то отношение ... но, увы, я не могу найти часть, которая фактически решает имя отображаемого поля.

Любая помощь была бы замечательной!

ответ

0

Он основан на иерархическом расположении веб-страницы. Но вы можете контролировать это с помощью свойства ClientId.

Так текстовое поле в UserControl будет называться ctrl01 # textboxname (как вы сказали в своем посте)

1

Он присоединяет его собственное имя с оригинальным идентификатором.

В ASP.NET 4 вы можете подавить это конкатенация и сохранить свой собственный идентификатор тремя различными способами:

  • Каждый сервер управления имеет атрибут clientIdMode, который вы можете установить на Static
  • Вы можете также установите clientIdMode в директиве страницы, которая повлияет на все элементы управления на странице.
  • Или вы можете установить его в web.config, чтобы повлиять на все элементы управления на всех страницах. (Если страница или элемент управления не установлен на другой clientIdMode

Примечание: Если вы используете AJAX Control Toolkit вам необходимо будет установить те элементы управления, которые являются частью инструментария к clientIdMode из Predictive

Смежные вопросы