У меня есть веб-приложение, которое отлично работает в нашей среде сцены/тестирования, но как только мы переместили его в нашу производственную среду, произойдет что-то странное. Все контрольные идентификаторы меняются. Например, ярлык перешел от ctl00_cphMainContent_lblPetName
к _ctl0_cphMainContent_lblPetName
. Почему это произойдет? Что может привести к чему-то подобному. Единственные два отличия, о которых я знаю, - это производственная среда с HTTPS, и я отключил отладку.Идентификация идентификатора элемента управления между средами
ответ
Ваш web.configs отличается. Поведение генерации идентификатора клиента зависит от EnableLegacyRendering. Пожалуйста, просмотрите файл xhtmlConformance вашего web.config. Если это Legacy, вы получите «_ctl», если нет - «ctl».
Спасибо, что это была именно эта проблема. У корневого web.config этот набор был устаревшим, и это было унаследовано нашим приложением, которое находилось в подпапке. – 2009-07-06 14:03:50
Как способ генерации идентификатора клиента может изменяться между различными версиями фреймворка, вы не должны полагаться на определенный шаблон.
Свойства, относящиеся к ClientID
и UniqueID
, должны использоваться с целью определения имени и имени, которые генерируются для кода html.
Свойство ClientID
содержит сгенерированный идентификатор, который вы, например, можете использовать с методом document.getElementById
в Javascript.
Свойство UniqueID
содержит сгенерированное имя, которое вы, например, можете использовать, если вы прочитали стоимость, отправленную с помощью формы из коллекции Request.Form
.
Это изменение было между 1.1 и 2.0 и, вероятно, будет в 4.0. Я не думаю, что среда настолько сильно отличается ... –
Я не думаю, что это конкретное поведение изменится в 4.0, так как все версии фреймворка с 2.0 являются инкрементальными. –
Хитрость заключается в том, чтобы сервер, который знает идентификатор элемента управления, отправляет его на клиентский JavaScript, который будет использовать его.
Обычный способ сделать это что-то вроде этого:
var btn1 = document.getElementById(" <%= button1.ClientID %>");
Я всегда ненавидел это, так как, по сути, вы пишете все ваши JavaScript во время выполнения. Вместо этого мне нравится, чтобы страница (или элемент управления) излучала класс, содержащий все идентификаторы элементов управления (или другие значения на стороне сервера), которые ему нужны.
Я бы опубликовал пример, но я не сделал этого какое-то время, и у меня его нет. В принципе, создайте класс JavaScript с членами для каждого идентификатора элемента управления, который вам нужен, и зарегистрируйте его со страницей. Затем зарегистрировать сценарий запуска, который делает что-то вроде этого:
myPage_Instance.btn1 = <%= button1.ClientID %>; // Better - do it in the codebehind
// more of the same
Ваш код теперь может быть:
вар btn1 = document.getElementById (myPage_Instance.btn1);
- 1. Методы управления конфигурационными файлами между несколькими средами
- 2. Идентификация элемента управления EmptyDataTemplate в JQuery
- 3. Конфигурация Продвижение между средами
- 4. Codeigniter - переключение между средами
- 5. Тип возврата из пользовательского элемента управления средами VS
- 6. Идентификация идентификатора Android
- 7. идентификация идентификатора listitem для contextmenu
- 8. Меню управления строит и делает по-разному между средами
- 9. Идентификация зависающего элемента с jquery без использования идентификатора?
- 10. Получение идентификатора элемента управления Sitecore от контроллера
- 11. Предел длины идентификатора элемента управления в ASP.Net
- 12. Миграция BO Отчеты между средами
- 13. Автоматическое переключение между средами Anaconda
- 14. Разница между двумя средами запросов
- 15. Идентификация элемента в pageloads
- 16. Идентификация и извлечение идентификатора JavaScript
- 17. Идентификация идентификатора группы в sql
- 18. Идентификация идентификатора клиента в BinaryJS
- 19. Совместимость программного обеспечения между несколькими средами разработки?
- 20. Перемещение аннотированных объектов jpa между средами
- 21. Передача «управления» в качестве параметра vs Передача идентификатора элемента управления
- 22. Перемещение задачи SSIS DQS между средами
- 23. Любые решения для управления несколькими средами?
- 24. Идентификация последнего элемента
- 25. Непоследовательное поведение перенаправления HTTP между средами хостинга
- 26. Изменение между средами Java8 и Java7
- 27. Проблемы с cookie сеанса между средами
- 28. Миграция конфигураций сообществ Salesforce между средами
- 29. Внесинхронные миграции между средами разработки и производства
- 30. Перемещение (большое количество) данных между средами
Его не связано с vb.net или javascript, пожалуйста, удалите эти теги. –