Идентификатор элементов управления мастер-страницами после рендеринга - PullRequest
1 голос
/ 05 июля 2011

В моих проектах asp.net есть главная страница и элемент управления Contentplaceholder1.Изменение идентификатора этого элемента управления после того, как отображается как "ctl00_Contentplaceholder1_control" в моем локальном.Но на сервере это меняется как «Contentplaceholder1_control».Когда я использовал функцию documents.getelelentbyid('ctl00_Contentplaceholder1_control') js, она работает на моем локальном компьютере, но не работает на сервере.Так зачем исчезать "ctl00_", когда приложение запускается на сервере?

Редактировать:

Почему идентификатор управления на стороне сервера не содержит "ctl00_" после рендеринга?

Ответы [ 5 ]

2 голосов
/ 05 июля 2011

Используйте свойство на стороне сервера ClientID, чтобы получить соответствующий идентификатор, или, если вы используете .NET 4, используйте ClientIDMode.

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

Ты должен делать как ...

documents.getElelentbyid('<%=ControlID.ClientID %>') 
1 голос
/ 05 июля 2011

Почему вы не используете ClientIDMode для создания статических идентификаторов? Какую версию .NET Framework вы используете?

Еще один вариант (для более старых версий) - обернуть ваш элемент управления .NET в div со статическим идентификатором, а затем использовать jQuery следующим образом:

 var wrapper = $('#wrapperDivId');
 var control = wrapper.find('typeOfControl')[0];

Таким образом, независимо от того, как отображается идентификатор вашего элемента управления, вы всегда можете получить к нему доступ.

Например, TextBoxes отображаются в <input type='text' />. Теперь вы можете обернуть текстовое поле внутри div следующим образом:

 <div id='wrapper'>
      <asp:TextBox ID='firstName' runat='server' />
 </div>

Теперь, независимо от идентификатора клиента, вы можете получить текстовое поле на стороне клиента, используя:

 $('#wrapper input')
0 голосов
/ 08 июля 2011

Ответ здесь .

Мой хостинг-сервер изменил свои серверы asp.net на сервер asp.net 4.Так что мои элементы управления отображаются без "ctl00_".Я скомпилировал свой проект .net 3.5 в .net 4 и Я изменил файл web.config следующим образом .

Теперь он работает.

0 голосов
/ 05 июля 2011
document.getElementById("<%= control.ClientID %>");

это гораздо более безопасный и лучший подход, чем жестко закодированный идентификатор клиента.

...