Краткий ответ
Поскольку Asp.net помещает все содержимое страницы в один элемент FORM
, следовательно, может происходить дублирование, и с помощью этой техники он пытается избежать этого (с успехом).
Длинный (эр) один
Когда вся страница находится внутри одного FORM
, мы рискуем дублировать входные имена (представьте себе редактируемый список объектов, которые имеют одинаковые свойства, которые также дают им одинаковые имена на входах). Следовательно, Asp.net называет все элементы управления на основе их именованного контейнера (INamingContainer
интерфейс) и количества. Это самый простой способ избежать любых конфликтов имен.
Когда вышел Asp.net 1.0, не было особой необходимости называть эти элементы управления по-разному, но в последнее время в толстых клиентских приложениях это возникает (представьте себе стили CSS для каждого идентификатора и клиентские скрипты).
Оказывается, однако, что довольно статичная страница также не изменит неопрятных идентификаторов элемента управления. Это будет долго, да, но это не изменится в течение жизненного цикла страницы.
Если вы вместо этого будете использовать статический режим, вы получите преимущество от хороших (эр) имен, но рискуете их дублировать, о чем вам следует знать.