Как RequiredFieldValidator автоматически останавливает обновление базы данных? - PullRequest
0 голосов
/ 08 ноября 2010

Мое предыдущее впечатление от RequiredFieldValidator и аналогичных им было то, что они показывают ярлык ошибки и устанавливают Page.IsValid значение false, и это все.Это означает, что они оставляют вам остальную часть задачи (предотвращая использование неправильных входных данных).Но сегодня я понял, что если вы используете DetailsView для вставки новой записи в базу данных и используете валидаторы для проверки текстовых полей внутри DetailsView, они автоматически препятствуют обновлению базы данных.

Я бы хотелзнать, как это реализовано за кулисами.Я предполагаю, что он прервал событие Page Lifecycle at Validator.PreRender, так что соединения с базой данных на более поздней стадии не могут быть достигнуты?Возможно, я ошибаюсь.

Я пытаюсь использовать Reflector, чтобы попасть внутрь RequiredFieldValidator, чтобы увидеть, как он реализован, но я не знаю, где искать.Может кто-нибудь дать несколько советов?

1 Ответ

1 голос
/ 08 ноября 2010

В этой статье подробно описывается проверка для ASP.NET.

http://msdn.microsoft.com/en-us/library/aa479045.aspx

Проверка может быть как на стороне сервера, так и на стороне клиента.Если используется, проверка на стороне клиента не позволяет пользователю отправить форму, пока она не будет проверена.Проверка на стороне клиента реализована с использованием JavaScript и DOM.Каждая кнопка отправки подключается платформой для проверки проверки перед выполнением обратной отправки.

Проверка на стороне сервера работает по-разному.Цепочка событий расширяется между загрузкой страницы и вызовом процедуры события.Результаты проверки установлены, что может быть интерпретировано любой процедурой обработки событий.

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

РЕДАКТИРОВАТЬ: Элемент управления DetailsView поддерживает элементы управления проверки на стороне сервера.Перейдите по этой ссылке для получения подробной информации http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.detailsview.aspx#security

...