Есть ли какой-либо недостаток в установке ClientIDMode = Static для каждого объекта (устанавливается на maincontent главной страницы)

#jquery #asp.net #client-side

#jquery #asp.net #на стороне клиента

Вопрос:

Я работаю над asp.net проект и каждый раз, когда мне нужно использовать идентификатор jquery $ (#»ObjectId»). Я должен изменить ClientIDMode для каждого объекта, чтобы он был статическим. Поскольку я заметил, что режим идентификатора клиента по умолчанию — Inherit, поэтому я установил режим идентификатора клиента MainContent на статический, и я обнаружил, что весь объект стал статичным.

Это, несомненно, сэкономит много времени при работе с jquery, но я просто хочу знать, есть ли в этом какой-либо недостаток и есть ли какая-либо причина, по которой ClientIDMode не должен быть установлен статическим в первую очередь?

Комментарии:

1. Итак, вы нашли какие-либо недостатки?

2. На самом деле мы обычно устанавливаем его в web.config для всех объектов в некоторых частях кода и выбираем хорошие идентификаторы для объектов — тогда в других проектах, где у вас более сложные зависимости и ожидаются более повторяющиеся изменения структуры, мы устанавливаем его на уровне объекта (на самой странице aspx).

Ответ №1:

Вы должны быть осторожны с установкой ClientIDMode в Static для таких вещей, как пользовательские элементы управления, или вы могли бы в конечном итоге получить несколько элементов с одинаковым идентификатором.

Для элементов управления с привязкой к данным, таких как GridView, вы также захотите использовать свойство ClientIDRowSuffix, чтобы гарантировать дифференциацию каждой строки.

В этом сообщении есть несколько хороших примеров.

Комментарии:

1. ссылка не работает. может быть, попробуйте это: west-wind.com/weblog/posts/2009/Nov/07 / …

2. Я обновил исходную ссылку в своем ответе. Теперь должно сработать! Спасибо.

Ответ №2:

Другим способом обработки идентификаторов в JavaScript было бы сделать что-то вроде этого:

 var something = '<%= btnId.ClientID %>';
  

Пример: если у вас есть элемент управления button, подобный этому:

 <asp:Button ID="btnId" runat="server"></asp:Button>    
  

и идентификатор преобразуется в, id="ct100_ContentPlaceHolder1_btnId" тогда вы могли бы использовать переменную something для доступа к элементу управления.

Комментарии:

1. если кнопка находится внутри пользовательского элемента управления, она не будет работать