Эта статья является продолжением RequiredFieldValidator. Проверка правильности заполнения полей в Asp.net. Часть 1 и посвящена описанию тонкостей передачи данных при проверке. В качестве исходных данных будем использовать код из статьи RequiredFieldValidator. Проверка правильности заполнения полей в Asp.net. Часть 1.
Установите EnableClientScript = True, если он еще не установлен. Суть параметра EnableClientScript в том, что приложение сначала пытается провести проверку на стороне пользователя, не нагружая лишний раз сервер. Если проверку на стороне пользователя провести не удалось, то тогда проверка будет проведена на стороне сервера. В отличие от языка PHP, разработчику не нужно делать клиентскую и серверную проверки.
Для кнопки "Отправить" добавим обработчик нажатия OnClick="btn_Click".
<asp:Button ID="btn" runat="server" Text="Отправить" OnClick="btn_Click" />
Код обработчика для нажатия кнопки:
protected void btn_Click(object sender, EventArgs e) { Label1.Text = "Данные отправлены"; }
Запустите приложение при EnableClientScript = True. При нажатии кнопки "Отправить" с пустыми полями в окне браузера будет показано 1 сообщение о том, что не заполнено поле Номер (Рис.1).
Так происходит потому, что проверка происходит на стороне клиента без отправки на сервер.
Теперь рассмотрим проверку на стороне сервера.
Запустите приложение при EnableClientScript = False. При нажатии кнопки "Отправить" с пустыми полями в окне браузера будут показаны 2 сообщения – о том, что не заполнено поле Номер и Данные отправлены (Рис.2).
Проверки заполнения полей на стороне клиента не происходит и данные сразу отправляются на сервер. Событие onClick для кнопки – это не то же самое, что отправка формы. Потому при нажатии кнопки "Отправить" происходит и проверка данных контролом RequiredFieldValidator, и работает обработчик btn_Click.
Для таких случаев в code-behind нужно добавлять проверку правильности данных. Для этого в ASP.Net есть мето IsValid. Метод IsValid возвращает информацию о том, успешно ли пройдены проверки на странице или нет.
В CS файле пропишите в обработчике btn_Click вывод сообщения для условия, когда проверки пройдены успешно и когда не успешно. Замените код обработчика btn_Click и почувствуйте разницу:
Проверка правильности введенных данных для обработчика onClick:
protected void btn_Click(object sender, EventArgs e) { if (Page.IsValid == true) { Label1.Text = "Данные отправлены"; //Код для дальнейшей обраобтки данных } else { Label1.Text = "Данные не отправлены"; } }
Такая отправка была только для примера. Для отправки данных формы на сервер никаких обработчиков onClick добавлять для кнопки не надо!