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

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

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

1 ответ

Решение

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

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

<pages clientIDMode="AutoID" ...

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

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

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

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

Другие вопросы по тегам