Работают ли стандартные валидаторы asp.net с Ajax и панелью обновления? - PullRequest
1 голос
/ 24 сентября 2008

У меня проблемы с тем, что валидаторы не запускаются (ожидаемые сообщения об ошибках не отображаются) при использовании Page.Validate () из кода. Валидаторы находятся внутри панели обновления Ajax.

Кажется, есть загружаемые Ajax-версии валидаторов. Я не уверен, что они мне нужны или они уже есть у VS 2008 SP1. Когда форма публикуется через кнопку, валидаторы работают, но не работают, когда я выполняю Page.Validate () по требованию.

Ответы [ 6 ]

1 голос
/ 24 сентября 2008

Может быть, мы можем взять это сверху. Вы можете ответить на эти вопросы?

  • Используете ли вы .NET 2.0 SP1 или выше?
  • Ваш валидатор находится внутри UpdatePanel или снаружи?
  • Используете ли вы свой сайт с отключенным JavaScript (очень маловероятно)?

Обратите внимание, что ваши валидаторы ДОЛЖНЫ находиться внутри обновленной панели обновления, чтобы они отображали сообщения об ошибках. Если они не находятся в обновленной панели обновления, валидаторы не смогут изменить свой внешний вид в браузере.

1 голос
/ 24 сентября 2008

Я не хочу форсировать обновление. В определенных ситуациях я хочу проверить некоторые элементы формы, когда пользователь изменяет значение в некотором элементе формы. Когда пользователь вносит изменения, чтобы сказать переключатель или выпадающий список, происходит автоматическая обратная передача. Когда происходит обратная передача, я хочу, чтобы элементы управления проверкой запускались, как если бы я нажал кнопку отправки.

В этих элементах управления, которые вызывают обратную передачу, включена «проверка причины». Другой тест в обработчике событий элемента управления, который вызвал обратную передачу, у меня есть Page.Validate ().

Вопрос в том, почему кнопка обратной передачи запускает проверку, а не другой элемент управления, вызвавший обратную передачу?

1 голос
/ 24 сентября 2008

Да, валидаторы работают внутри UpdatePanel, но вам нужно использовать как минимум SP1 ASP.NET 2.0. Если вы используете SP1, вам не нужно и не следует использовать «версию ajax» валидаторов.

Более подробная информация по этому вопросу доступна здесь:

StackOverflow: валидаторы ASP.NET внутри панели обновления

0 голосов
/ 25 сентября 2008

Я закончил тем, что использовал один пользовательский валидатор и делал свои собственные проверки в коде и устанавливал сообщение об ошибке пользовательского валидатора. Таким образом, у меня было больше гибкости, и это сработало. Используя Ajax, это похоже на проверку на стороне клиента.

0 голосов
/ 24 сентября 2008

Они были включены в обновление для .Net framework некоторое время назад, так что да, у вас они есть в VS2008 SP1. Я обнаружил проблему, когда метод на стороне сервера для CustomValidators запускается дважды без "злого" эффекта, но в остальном они работают нормально.

Что касается конкретной проблемы, с которой вы столкнулись, возможно, валидаторы не находятся внутри панели обновления, или какая-то другая панель обновляется каким-либо элементом управления, размещенным вместо того, который вы хотите? Или даже некоторые ValidationGroups определены где-то, и только они заканчиваются проверкой? Трудно сказать, не видя код.

Но убедиться, что ваши валидаторы показаны, легко: MyUpdatePanel.Update () принудительно обновит.

0 голосов
/ 24 сентября 2008

Вы звонили в Update на панели обновлений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...