HTML-классы и идентификаторы с $ или не буквенно-цифровыми символами - PullRequest
0 голосов
/ 03 января 2011

Я смотрю на некоторый код сайта в формате документа XHTML и из того, что я вижу, это ASP.net. Идентификаторы в HTML содержат «$».

Например:

<img id="$ct100templateContent$SectionPanel1$ctl01$ctl02ctl00_templateContent_SectionPanel1_ctl01_ct999img" src="this.jpg"/>

С семантической точки зрения W3C «$» недопустимо в идентификаторе или классе. Идентификаторы и классы могут содержать только буквенно-цифровые символы в типе XHTML.

Является ли "$" соглашением об именах ASP.net, относящимся к веб-элементу управления или элементу шаблона?

Ответы [ 3 ]

1 голос
/ 03 января 2011

Я немного запутался, как / почему вы видите знаки доллара в id .

При рендеринге веб-элемента управления в разметке ASP.NET генерирует * 1005 элемента* и name атрибуты на основе свойства ID веб-элемента управления и его расположения в иерархии элементов управления.Короче говоря, некоторые элементы управления, такие как шаблонные элементы управления или повторяющиеся элементы управления, действуют как именование контейнеров .Значения свойств ID таких элементов управления имеют префикс перед внутренними элементами управления ID при определении атрибутов id и name.

Например, рассмотрим следующую иерархию элементов управления:

Sample ASP.NET control hierarchy.

Здесь элементы управления Master Page (ctl00) и ContentPlaceHolder (MainContent) являются контейнерами именования.Веб-элемент управления Age TextBox будет иметь отображаемые значения id из clt00_MainContent_Age - namely, its own server-side ID property value prefixed with the ID` своих предков контейнера именования.

Но обратите внимание, как визуализированный id разделяет каждый контейнер именованияspot с подчеркиванием. Это функциональность по умолчанию в ASP.NET, поэтому я озадачен тем, почему вы видите знаки доллара в атрибуте id.(При формулировании атрибута name ASP.NET разделяет каждое пятно контейнера именования со знаком доллара, но не следует использовать $ при формулировании значения атрибута id.)

Какая версия ASP.NET вы используете?Ты что-нибудь делаешь ... странно?Как использование пользовательских элементов управления и переопределение свойства IdSeparator базового Control класса?Если вы используете ASP.NET 4, вы устанавливаете (намеренно или непреднамеренно) свойство ClientIDMode элемента управления?

0 голосов
/ 03 января 2011

Да, ASP.NET использует символ «$», когда генерирует идентификаторы элементов управления на основе иерархического макета страницы.ASP.NET не использует символ «$» в именах классов.

0 голосов
/ 03 января 2011

Значение $ обозначает уровень, на котором элемент управления встроен в ваш сайт / страницу.Вы также можете изменить ClientIDMode на Static, чтобы использовать свои собственные идентификаторы.

...