Веб-формы ASP.Net — страницы clientIdMode

Я занимаюсь обновлением устаревшего веб-сайта ASP.Net (веб-форм) с .NET 3.5 до .NET 4.5. Недавно я заметил, что после обновления некоторые элементы управления ASP.Net были переименованы с ctl00_Content_dropDown1 на ctl00$Content$dropDown1 в HTML, что нарушило большую часть клиентского JavaScript.

Как я могу предотвратить это изменение после обновления?


person Kyle B    schedule 27.06.2018    source источник


Ответы (1)


docs.Microsoft.com говорит, что переход с .NET 3.5 на .NET 4.0 (или более позднюю версию) вызывает это критическое изменение, которое изменяет способ создания атрибута id для элементов.

В файле web.config измените элемент <pages>, добавьте к нему атрибут clientIDMode вот так:

<pages clientIDMode="AutoID" ...

Это должно продолжать создавать идентификаторы так, как это делалось раньше.

В дополнение к AutoID, MSDN перечисляет несколько других полезных опций:

  • AutoID — автоматическое создание сегментов с символом подчеркивания
  • Наследовать - Наследовать режим от родительского контейнера
  • Предсказуемость — значение по умолчанию для страницы в .NET 4.0 и более поздних версиях.
  • Статический — ClientID устанавливается равным значению свойства ID

Предполагается, что Visual Studio устанавливает ClientIDMode в AutoID при обновлении с .NET 3.5 до .NET 4.5, однако я не думаю, что это работает, если у вас нет веб-проекта ASP.Net (.csproj), а вместо этого все, что у вас есть это веб-сайт ASP.NET.

person Kyle B    schedule 27.06.2018