Сокращение действительно длинных идентификаторов клиента - PullRequest
0 голосов
/ 20 декабря 2010

Я получаю очень длинные идентификаторы клиентов, один из таких примеров приведен ниже. Некоторые из них имеют длину около 100 символов, что смешно. Могу ли я использовать какой-либо инструмент или инструмент, который сократит идентификаторы страниц?

ID = "ctl00_ctl00_MainContent_MemberMain_Abc_asdsad ...._ DlSAdasdasdasd_ctl00_PnsadasdasdnsHF"

EDIT: Я много вкладываю, что является причиной проблемы. Я использую .net 3.5. и столкновения не в порядке, так как некоторые из идентификаторов используются функциями JavaScript

Ответы [ 6 ]

2 голосов
/ 03 февраля 2012

Я также столкнулся с этой проблемой, но мое решение было на стороне jQuery.Я просто поменял «селектор».Обычно идентификатор, который вы ищете, является последней частью данного идентификатора ASP.Net.По умолчанию вызовы для идентификатора генерируются с помощью этого селектора: #theid, поэтому я изменил его на [id $ = theid], который является селектором CSS3, чтобы найти элемент, идентификатор которого заканчивается на «theid».Пример:

От:

if (jQuery("#txtEmailFinish").val() != "") 

Перейдите на:

if (jQuery("[id$=txtEmailFinish]").val() != "")

Может быть полезно, если у вас уже работают ваши javascripts и с простым поиском и заменойизмените вызов на идентификаторы.

Примечание. Причина, по которой мне пришлось это сделать, заключалась в том, что мне нужно было сделать приложение, разработанное в ASP.Net 4.0, обратно в ASP.Net

.
2 голосов
/ 20 декабря 2010

Если вы используете ASP .NET 4, вы можете установить ClientIDMode в Static.Тогда вам просто нужно убедиться, что идентификаторы управления в иерархии уникальны. Смотрите это .

1 голос
/ 05 июля 2011

Если вы хотите сжать объем вывода страницы, рассмотрите HTML-компрессор, такой как HTMLCompressor:

http://www.textfixer.com/html/compress-html-compression.php

Я обнаружил, что, удалив все пробелы изРазметка ASP.NET Я сэкономил 45% на пропускной способности AJAX.Используйте Fiddler (http://www.fiddler2.com/fiddler2/), чтобы увидеть разницу.

1 голос
/ 20 декабря 2010

Может быть. Если вы используете .NET 4.0. Если нет, я не думаю, что есть способ сократить имя. В ASP.net <= 3.5 каждый ContentPlaceHolder или UserControl будет добавлять свое имя к. Если вы пытаетесь получить к ним доступ с помощью javascript, вы можете использовать несколько различных методов. </p>

Только для .NET 4.0: укажите ClientIDMode = "Predictable" или ClientIDMode = "Static" в вашей декларации MasterPage или UserControl (и, возможно, ваших декларациях страниц).
Если вы используете .NET 3.5 или менее, вы не можете сократить, но вы можете использовать один из них:

  1. JQuery имеет функцию, которая позволяет вам найти по концу текст:
    var ElemIWant=$("[id$=PnsadasdasdnsHF]");

  2. Использовать встроенный вызов ASP:
    var ElemIWant=document.getElementById('<% =TextBox1.ClientID %>);

Есть еще одна статья, на которую вы можете посмотреть: Требуется обходной путь для искажения имени главной страницы .Net

0 голосов
/ 20 декабря 2010

Интерфейс INamingContainer, вероятно, то, что вы ищете. Реализуйте это на окружающих элементах управления.

0 голосов
/ 20 декабря 2010

Какую версию VS.NET/.NET вы используете?Новый ClientIDMode в ASP.NET 4 позволяет вам контролировать, как генерируются идентификаторы клиента:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=492

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...