Ответ 1
Я подозреваю, что вы используете оригинальную версию (RTM).NET 2.0.
До начала 2007 года элементы проверки валидатора не были совместимы с UpdatePanels. Это было разрешено с помощью пакета обновления 1 (SP1).NET Framework.
Источником проблемы является то, что UpdatePanel может обнаруживать изменения разметки на вашей странице, но не имеет возможности правильно отслеживать скрипты. Валидаторы в значительной степени полагаются на скрипты. Во время частичной обратной передачи сценарии либо сбрасываются, не обновляются, либо не запускаются, когда они предназначены.
В ранних бета-версиях MS обновила UpdatePanel, чтобы угадать, какие сценарии необходимо повторно отобразить или запустить. Это не сработало хорошо, и они должны были его вынуть.
Чтобы обойти немедленную проблему, Microsoft выпустила исправленную версию классов валидатора в новой DLL под названием Validators.DLL и дала инструкции о том, как сообщить ASP.NET о том, чтобы использовать эти классы вместо реальных. Если вы используете Google для этого имени DLL, вы должны найти дополнительную информацию. См. Также Это сообщение в блоге.
Это была мера остановки, и вы не должны не использовать ее, если это возможно.
Реальное решение проблемы появилось вскоре после этого в .NET 2.0 SP1. Microsoft представила новый механизм регистрации скриптов в пакете обновления 1 и изменила классы действительного валидатора на использование этого механизма вместо старого.
Позвольте мне подробно рассказать об изменениях:
Традиционно вы должны регистрировать скрипты с помощью таких методов страницы, как page.RegisterStartupScript() и Page.RegisterClientScriptBlock(). Проблема в том, что эти методы не были предназначены для расширения, и UpdatePanel не смогла отслеживать эти вызовы.
В SP1 на странице с именем Page.ClientScripts появился новый объект свойства. У этого объекта есть методы для регистрации сценариев, которые эквивалентны (и в некотором смысле лучше) исходным. Кроме того, UpdatePanel может отслеживать эти вызовы, чтобы при необходимости повторять или называть методы. Старые методы RegisterStartupScript() и т.д. Устарели. Они все еще работают, но не внутри UpdatePanel.
Нет причин (кроме политики, я полагаю) не обновлять свои установки до .NET 2.0 SP1. Пакеты обновления содержат важные исправления.
Удачи.