Pull to refresh

ASP.NET: CssClass как альтернатива клиентскому ID

Reading time1 min
Views622
В ASP.NET довольно сложно предсказать клиентский ID элемента, то есть если вы можете задать ID серверного контрола <asp:TextBox />, то предсказать какой-будет ID у соответствующего элемента <input type=”text” /> довольно трудно. В то время как довольно часто необходимо знать ID отрендеренного элемента. Но он выглядит примерно так — ctl00_contentBody_txtStreet. Существует несколько способов преодоления этой трудности, которые описаны здесь. Все они либо требуют написания громоздких конструкций, либо даже создания своих собственных контролов. Но существует еще один очень простой способ получения клиентского ID.

Наверняка, все вы помните атрибут CssClass у серверных контролов ASP.NET, который соответствуют атрибуту class HTML тэгов. Наверняка, многие работали с jQuery и знают селектор, позволяющий получить элементы с указанным именем класса. Так почему бы и не объединить все это?

А все вместе это будет выглядеть так:

<asp:TextBox ID="txtStreet" runat="server" CssClass="txtStreet" />

Вы просто даете свойству CssClass уникальное значение

А затем уже можете получить введенное значение с помощью JavaScript

alert($('.txtStreet').val());

Очень просто. Но, стоит помнить, что данный селектор переберет все HTML тэги, что в случае большой страницы, может занять некоторое время. Поэтому стоит указать jQuery в каким именно тэгах ему стоит искать, а делается это просто – надо лишь добавить имя тэга перед селектором класса:

alert($('input.txtStreet').val());

В ASP.NET 4.0 так извращаться не придется, поскольку клиентские ID будут более предсказуемыми.
Tags:
Hubs:
Total votes 9: ↑6 and ↓3+3
Comments11

Articles