Я хочу использовать jQuery с веб-сайтами asp.net. Нужен ли мне специальный набор инструментов, чтобы элементы управления .net выдавали дружественные идентификаторы элемента управления?
Причина в том, что я не хочу писать javascript, ссылающийся на мой идентификатор html, например control_123_asdfcontrol_234.
Было ли это решено в версии 3.5? (Я помню, что читал, что вам нужно получить специальную dll, которая делает ID дружественным).





Вы можете использовать myControlId = "<%= myControl.ClientID %>"; для вывода (недружественного) идентификатора, используемого для ссылки на него в Javascript.
как насчет var controlId = "<% = myControl.ClientID%>" тогда?
Есть много способов выбора элементов с помощью jQuery. Вы можете сделать тщательный выбор Tag / ClassName для одного.
Я не знаю никакого способа возиться с самими идентификаторами до ASP.NET 4.0. Конечно, вы всегда можете попробовать Платформа ASP.NET MVC.
Хотя я не слышал об этой новой "специальной dll", о которой вы говорите, один простой способ - использовать
var myControlId;
В вашем отдельном js-файле, а затем назначьте идентификатор клиента этой переменной в файле aspx / ascx.
Я тоже ненавижу ID сервера: s ... ASP.NET MVC - это решение всех вещей, которые меня раздражают с помощью веб-форм asp.net (Viewstate ... и т. д.).
Вы можете прикрепить уникальный атрибут к своим элементам управления (я не уверен, что вы можете сделать это без расширения базовых веб-элементов управления; быстрый поиск показал только это), а затем использовать селектор «element [attribute: value]».
Вы также можете переопределить свойства UniqueName и / или ClientID элементов управления в расширяющемся классе и вернуть фактический идентификатор.
MyTextBox : Web.UI.TextBox
{
// This modifies the generated 'name' attribute
override UniqueID { get { return ID; } }
// This modifies the generated 'id' attribute
override ClientID { get{ return ID; } }
}
Самый простой способ, который я нашел, - это просто сопоставить конец искаженного идентификатора для большинства элементов управления. Известные исключения - это списки радиокнопок и списки флажков - с ними нужно быть немного сложнее.
Но если у вас есть это на вашей странице .aspx:
<asp:TextBox ID = "txtExample" runat = "server" />
Тогда ваш jQuery может легко найти этот элемент управления, даже если он искажен отрисовкой главной страницы, например:
$("[id$=txtExample]")
Оператор $= соответствует концу строки, а изменение имени всегда идет впереди. Как только вы это сделаете, вы можете получить фактический искаженный идентификатор следующим образом:
$("[id$=txtExample]").attr("id")
а затем проанализируйте это так, как считаете нужным.
Обновлено: Это простой способ, но он может быть большим ударом по производительности, чем просто присвоение каждому элементу управления такого же класса, как и его старый идентификатор.
См. Статью, на которую Джефф разместил ссылку на другой вопрос по оптимизации jQuery:
jQuery: анализ производительности селекторов
Если вы для начала используете WebForms, скорее всего, вы все равно не слишком заботитесь о таких вещах, как производительность.
Попробуйте $get('myId').
Я думаю, что это способ выбрать элемент в документах, отличных от HTML.
это если javascript встроен в мою страницу .aspx, но мой будет отдельным файлом .js, который не будет анализироваться.