Стандартные валидаторы asp.net работают с Ajax и панелью обновлений?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
6 517
6

Ответы 6

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

Я не пользуюсь обновлением. Панель обновлений используется только для обратной передачи.

Abdu 24.09.2008 03:04

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

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

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

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

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

StackOverflow: валидаторы ASP.NET внутри UpdatePanel

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

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

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

Что ж, если вы хотите увидеть результаты проверки на стороне клиента, панель обновлений, где находятся валидаторы, будет обновлена ​​потребности. В противном случае сообщения об ошибках не появятся. Каков результат Page.IsValid () в управляющих событиях, которые вы используете?

Jorge Alves 24.09.2008 03:15

Не могли бы вы пояснить, что вы имеете в виду под «обновлением», когда говорите «Я не хочу форсировать обновление»? Если вы отправляете обратную передачу, UpdatePanel или нет, вы получите обновление страницы, даже если это может не выглядеть так для пользователя.

Euro Micelli 24.09.2008 03:15

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

Abdu 24.09.2008 03:44

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

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

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

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

Другие вопросы по теме