Когда происходит «волшебство» для изменения тега asp.net на выбор?
Большая часть «магии», о которой вы задаетесь вопросом, выполняется элементами управления ASP.NET,которые предназначены для генерации разметки, отправляемой в браузер.
При получении запроса приложение выполняет итерацию по каждому элементу управления, вызывая свой метод Render
(унаследованный от Control
class), который позволяет каждому элементу управления создавать разметку, которую они представляют.
Следуя вашему примеру, элемент управления DropDownList
создает тег <select>
.Как ListControl
, он использует элементы управления ListItem
для создания тегов <option>
внутри.
Другим будет GridView
, который генерирует <table>
с использованием GridViewRow
элементов управления для <tr>
и различные HTML-элементы управления, такие как TableCell
для <td>
и <th>
, для создания остальной разметки.
Шоуд Я использую теги, которые я вижу в исходном кодестраницу в браузере, или я могу спросить jQuery о тегах asp.net?
Нет, jQuery / JavaScript не знает имен элементов управления на стороне сервера, только разметку, которую они генерируют.Таким образом, вместо поиска $('DropDownList')
, вы будете искать $('select')
.
Более того, я не вижу имен своих классов CSS, добавленных в теги asp.net.Существуют разные имена классов CSS.
Под " Имена CSS " вы подразумеваете идентификаторы?Прошу прощения, но атрибуты CssClass
не должны изменяться в значении от серверной стороны к клиентской, только в имени - CssClass
до class
.
идентификаторов, вкл.с другой стороны, имеют префикс для обеспечения их уникальности по всей странице, включая префикс имен MasterPage и ContentPlaceHolder, если они используются.По этой причине я бы воздерживался от попыток использовать идентификаторы для применения CSS к элементам управления на стороне сервера, вместо этого используя классы.
Теперь конец идентификатора должен оставаться в качестве идентификатора, который вы дали в server-сбоку, так что вы все равно сможете найти элемент в jQuery, используя Концы атрибутов с селектором [name$='value']
:
# ASP
<asp:DropDownList ID="AnyGivenDropDown" runat="server" />
# HTML (generated)
<select id="ctl00_PageContents_AnyGivenDropDown"></select>
# JavaScript
$('select[id$="_AnyGivenDropDown"]');
В противном случае, я бы использовал классы, чтобы найтиэлементы управления, которые вы ищете:
# ASP
<asp:DropDownList ID="AnyGivenDropDown" CssClass="anygiven" runat="server" />
# HTML (generated)
<select id="ctl00_PageContents_AnyGivenDropDown" class="anygiven"></select>
# JavaScript
$('select.anygiven');
# CSS
.anygiven { }