2010-05-03 2 views
0

У меня есть пользовательский класс (ServerSideValidator.vb), который проверяет ввод пользователя на стороне сервера (он не использует какой-либо из .NET встроенных валидаторов, поэтому Page.Validate() is не вариант для меня). Я вызываю метод Validate() на странице. Событие IsPostback и класс выполняются без каких-либо проблем.Как предотвратить обработчик событий PostBack от Firing

Моя проблема в том, когда проверка не завершена (возвращает false), я хочу остановить обработчик события обратной передачи, но загрузить страницу вместе со всеми элементами управления и пользовательскими значениями в них. Если я это сделаю, Response.End(), страница будет пуста. Я могу программно проинструктировать страницу перейти на предыдущую страницу (оригинальная форма до обратной передачи), но она теряет все пользовательские входы.

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

Кажется, что все связанные с обратной связью свойства/переменные, с которыми я сталкиваюсь внутри класса страницы, являются «Readonly», и я не могу назначить значения для предотвращения/предотвращения события postback при стрельбе.

Любые idiea о том, как я могу это сделать? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

ответ

0

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

Редактировать: Это не совсем то, о чем вы просили, но я чувствую, что он будет делать то, что вы хотите, в то же время вписывая существующий проект проверки ASP.NET. См. http://www.dotnetcurry.com/ShowArticle.aspx?ID=197 и http://www.4guysfromrolla.com/articles/073102-1.aspx

В принципе, вы создаете пользовательский класс, как и сейчас, но наследуете от BaseValidator. Чтобы следовать вашему дизайну, вы можете создать перечисление под названием ValidationType, которое имеет алфавитный, буквенно-цифровой и т. Д. В своем пользовательском классе создайте свойство, называемое ValidationType, которое использует перечисление ValidationType. Конечно, вы должны добавить всю логику проверки. Затем на странице aspx вы можете добавить свой настраиваемый валидатор на страницу и установить ValidationType = «Алфавитный указатель» и т. Д. С полной поддержкой IntelliSense.

Поскольку вы используете BaseValidator, все обычные методы проверки будут работать, в том числе Page.Validate(), Page.IsValid и т. Д. Вы даже можете создать JavaScript-подтверждение валидации JavaScript, если хотите.

Сказав это, кто-то, возможно, уже сделал большую часть этого для вас.

+0

Это сообщение на той же странице. например, у меня есть кнопка SAVE на странице Default.aspx. Когда пользователь нажимает на кнопку, на Page_Load Я кодирования если Page.IsPostBack Тогда Dim SSV As New ServerSideValidator() ssv.AddValidation (txtName, 'алфавитной') ssv.AddValidation (txtDescription, 'алфавитно-цифровой') Если не ssv.Validate() Затем '' Я ищу здесь блок кода, который будет обходить обработчик событий кнопки SAVE . Я до сих пор хочу, чтобы страница заканчивалась '' Загрузка и сохранение всех пользовательских входов Конец Если Конец Если – user331744

+0

Это сообщение на той же странице. например, у меня есть кнопка SAVE на странице Default.aspx. Когда пользователь нажимает кнопку, на странице_Load я кодирую
Если страница.IsPostBack Then
Dim ssv As New ServerSideValidator()
ssv.AddValidation (txtName, 'alphabetic')
ssv.AddValidation (txtDescription, 'alphanumeric')
Если Not ssv.Validate() Then
'' Я ищу код блок, который будет обходить обработчик событий кнопки «SAVE»
. Я все еще хочу, чтобы страница заканчивалась
'' Загрузка и сохранение всех пользовательских входов
Конец Если
Конец Если – user331744

+0

Когда я упомянул о возвращении на предыдущую страницу. Я просто сделал javascript history.go (-1). Таким образом, он загрузил default.aspx в качестве новой нагрузки (без ввода всех пользовательских входов) – user331744

Смежные вопросы