вторник, 16 ноября 2010 г.

ASP.Net Ajax валидаторы

В текущем проекте вылезла следующая проблема: есть форма, на ней располагаются контролы, к некоторым контролам привязаны валидаторы (MaskedEditValidator, RegularExpressionValidator, MaskedEditExtender). Так же есть кнопка при нажатии, на которую с помощью ModalPopupExtender показывается всплывающее окно. При первоначальной загрузке формы всё отображается и работает как надо. Но при нажатии на кнопку, осуществляющую PostBack, все ломается: при нажатии на кнопку не показывается всплывающее окно, не работают валидаторы (на клиенте не отображается способ валидации).
Так в чем же проблема?

Решение:
Полазив по инете и поискав возможные решения, я толком ничего не нашел. Кроме разве что вот этой статьи, которая на первый взгляд малость касается моей проблемы. К тому же стоит отдать должное ИЕ8, который помог найти проблему, почему-то в FF ошибки скриптов не отображаются на панели, хотя стоит FireBug. Может не настроил?
Когда загрузил страницу в ИЕ, то увидел ошибку скрипта:
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Timestamp: Mon, 15 Nov 2010 09:18:22 UTC

Message: Sys.ArgumentUndefinedException: Value cannot be undefined.
Parameter name: id
Line: 5141
Char: 12
Code: 0
URI: http://localhost:55/ScriptResource.axd?d=V_NtTRPEMDO1ptCgFAQjVZF...


Поотлаживал я javascript, но ничего существенного не нашел, кроме того, что не находятся нужные  идентификаторы. Возвращаясь к статье, которую я привел выше, я увидел, что рекомендуют поставить флаг ClearMaskOnLostFocus="false". Поставил и заработало!!! :)
Проблема заключалась в том, что на странице были поля обязательные для заполнения и на них были натравлены валидаторы. Без установки ClearMaskOnLostFocus="false" у них "срывало голову" (почему не выяснил), т.к. после postback не могли найти нужный контрол о чем красноречиво говорит javascpit-ошибка. Т.е. события валидаторов срабатывали, но реакции не последовало, т.к. ИД нужных объектов не были проинициализированы. Установка этого флага решила проблемы.

Комментариев нет:

Отправить комментарий

Еще статьи

2leep.com