Как изменить то, что возвращает элемент управления RequiredFieldValidator? - PullRequest
1 голос
/ 17 мая 2011

Я довольно новичок в ASP.NET, но я пытаюсь проверить форму. У меня работает проверка, но я хочу изменить способ ее отображения. Я использую элемент управления RequiredFieldValidator, который генерирует тег span с атрибутом ErrorMessage внутри. В зависимости от того, как я установил некоторые атрибуты, тег span может быть скрыт или отображаться с помощью встроенного CSS (отображение: нет, видимость: скрыто и т. Д.). Вместо того, чтобы валидация возвращала диапазон, я бы хотел, чтобы CssClass элемента управления TextBox менялся в зависимости от результата валидации. Я не хочу, чтобы область разметки была связана с моей разметкой, даже с display: none.

Возможно ли это? Где я могу начать достигать этого?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Вы не можете изменить RequiredFieldValidator для обновления другого элемента управления, например текстового поля, он будет обновлять только себя или ValidationSummary, если он есть на странице.

2 варианта, которые вы должны получить желаемый результат:

  1. Использовать элемент управления CustomValidator
  2. Создайте свой собственный серверный элемент управления , который может обновлять класс css текстового поля

Хотя ни одна из этих опций, скорее всего, не даст вам «чистый» HTML-код, который вы ищете, без каких-либо дополнительных тегов span или div, они будут соответствовать другим вашим требованиям, если вы готовы потратить время на написание JavaScript (или jQuery). Однако, учитывая доступные альтернативы (в основном проверка на стороне клиента только через какую-то платформу), вам все же лучше придерживаться проверки ASP.NET, поскольку она может обеспечить проверку на стороне сервера.

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

Чтобы получить реальный пример того, как вы можете использовать jQuery и пользовательские серверные элементы управления для получения результатов, которые вы ищете, перейдите на страницу оформления заказа на Складной складной стул (вам нужно будет добавить товар в корзину первым, чтобы туда попасть). Когда вы отправляете форму, не заполняя ее, недействительным текстовым полям назначаются новые классы CSS, которые меняют цвет фона. Однако, поскольку они являются серверными элементами управления, функциональность будет работать независимо от того, включен JavaScript или нет.

0 голосов
/ 18 мая 2011

Это больше работы, но это возможно с CustomValidator. Таким образом, у вас есть больше контроля через функцию проверки JS.

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