Что корректное устанавливает ClientIDMode в ASP.Net 4 для получения рендеринга ASP.Net 2.0.

Мы только что обновили наше приложение от ASP.Net 2.0 до ASP.Net 4.0.

Мы включали в web.config в <system.web> элемент:

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />

Мое понимание - то, что это, как предполагается, представляет средства управления то же, как.Net 2.0/3.5 был бы.

Однако... это не..., вот один пример

Это представляется в 2,0:

<input id="grdUserEntity__ctl1_chkSelectAll" type="checkbox"
   name="grdUserEntity:_ctl1:chkSelectAll" onclick="javascript:iSelectAll();" />

Это находится в 4,0:

<input id="grdUserEntity_ctl01_chkSelectAll" type="checkbox" 
   name="grdUserEntity$ctl01$chkSelectAll" onclick="javascript:iSelectAll();" />

Различие:

2.0 id=grdUserEntity__ctl1_chkSelectAll
4.0 id=grdUserEntity_ctl01_chkSelectAll

Согласно то, что я считал ту установку конфигурации, заставит ASP.Net 4.0 представлять управление сервером и клиентский идентификатор тождественно к предыдущей версии.

Что мы делаем неправильно?

8
задан sharptooth 21 February 2013 в 09:20
поделиться

1 ответ

В ASP.NET 2.0 и ASP.NET 3.5 было внесено изменение в способ отображения идентификаторов. Поскольку вы переходите с 2.0 на 4.0, вы все еще видите эту разницу. Это изменение было связано с улучшением соответствия XHTML.

Вы можете попробовать переключиться обратно на рендеринг 2.0 с помощью настройки совместимости xhtmlCompliance. Еще одна настройка совместимости, да :) Это должно сработать, но, честно говоря, я не уверен, насколько хорошо протестирована старая настройка совместимости в 4.0, и я знаю, что она не совместима с UpdatePanel, если вы планируете ее использовать.

Есть ли причина, по которой вы хотите сохранить рендеринг 2.0? Просто страх перед регрессиями, или у вас есть какие-либо известные реальные регрессии?

Настройка XHTML: http://msdn.microsoft.com/en-us/library/ms178159.aspx

12
ответ дан 5 December 2019 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: