Спасибо кучам tvanfosson за оперативную помощь.
ОК, обновление:
Я перебирал все больше и больше ссылок и в итоге нашел документацию для «успеха» Документация на собственной домашней странице плагина ужасна и пропускает многие ключевые функции :) Но на официальной странице jQuery это "лучше". Опция «success» предназначена для запуска каждый раз, когда отдельное поле успешно проверено. Так что это сработало по проекту, и я ошибочно предполагал, что он сработает только тогда, когда вся форма будет действительной.
Я попробовал твою неверную идею Хендлера. Мне понравилась эта идея. Одна проблема, с которой я столкнулся, заключалась в том, что обратная передача ImageButton все равно ВСЕГДА запускается первой, поэтому она начнет отправлять обратно до запуска кода invalidHandler. Таким образом, обратная передача все равно будет продолжаться, затем после этого invalidHandler отключит будущие обратные передачи, к сожалению, они запускаются в неправильном порядке. Но кроме этого он показал все признаки того, что является идеальным решением.
Затем я пошел другим путем, пытаясь представить submitHandler, то есть наоборот. Опять же, это вызвало некоторые проблемы с порядком, потому что постбэк сначала снова будет запускаться, но будет заблокирован, а затем submitHandler разрешит будущие обратные передачи, но было уже слишком поздно, поэтому этот обратный запрос был пропущен. Вам придется дважды нажать кнопку, чтобы заставить ее работать.
Итак, окончательное полукладкое решение, не так уж плохо, если честно, было:
Я изменил эту строку на:
// Присоединяем проверку на стороне клиента к основной форме
$ ("# <% = form1.ClientID%>"). validate ({submitHandler: function () {PreventPostback = false; __doPostBack ('UpdatePanel1', '');}});
Что, как вы можете видеть, сначала переключает переменную PreventPostback, но затем вручную запускает новую обратную передачу, поскольку первая обратная передача уже была бы заблокирована и прекратилась. Таким образом, этот ручной вызов __doPostBack обеспечивает запуск новой обратной передачи с учетом нового значения PreventPostback.
Я удалил методы событий из-за ImageButtons и создал новый метод в коде на стороне сервера, который называется «DoPostBackLogic ()», который вызывается только тогда, когда страница отправляется обратно, что, я знаю, должно быть из этой логики проверки потому что это единственный постбэк, который может произойти в моей форме. Тогда вся логика скрытия / показа / сохранения происходит для меня. Это означает, что когда я вручную вызываю __doPostBack, я могу просто использовать идентификатор UpdatePanel и не беспокоиться о том, чтобы имитировать определенный ImageButton и т. Д.
Таким образом, это работает отлично. Обратная передача по умолчанию отключена, и когда форма действительна, обратные передачи разрешаются, но обратная передача запускается вручную, так что новое значение вступает в силу.
Так что это, по сути, ваше второе решение, еще раз спасибо за прослушивание и обмен! :)