Как ASP.NET Webforms определяет HTML-имя элемента управления? - PullRequest
0 голосов
/ 09 апреля 2011

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

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

Любая помощь будет потрясающей!

Ответы [ 4 ]

1 голос
/ 10 апреля 2011

Он объединяет свое собственное имя с исходным идентификатором.

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

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

Примечание. Если вы используете AJAX Control Toolkit, вам нужно установить для элементов управления, входящих в состав набора инструментов, значение clientIdModePredictive

1 голос
/ 09 апреля 2011

Вы, вероятно, ищете эту статью MSDN .

0 голосов
/ 09 апреля 2011

Помимо других ответов, если вы используете ASP .NET 4, у вас есть намного больше контроль над ним.

Посмотрите на этих веб-страницах

http://www.west -wind.com / weblog / posts / 54760.aspx

http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

0 голосов
/ 09 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...