Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

protected void DateValidate(object source,

ServerValidateEventArgs args)

{

string strdate = args. Value. ToString();

try

{

DateTime date = Convert. ToDateTime(strdate);

args. IsValid = true;

}

catch (FormatException ex)

{

args. IsValid = false;

}

}

Второй параметр этой функции представляет собой значение, проверяемое на корректность. Мы пытаемся (try) преобразовать значение параметра (строку) к типу данных DateTime и в зависимости от результата устанавливаем его свойство IsValid, показывающее, является ли корректным наше значение. В том случае, когда строку не удается преобразовать корректно, возникает исключение FormatException, которое мы и обрабатываем.

Обратите внимание – эта проверка выполняется не в браузере, а на сервере, уже после отправки браузером данных.

Если значение было некорректным и мы выполнили действие args. IsValid=false, то автоматически назначается свойство Page. IsValid=false для всей страницы в целом. Это свойство мы будем использовать для дальнейшей обработки.

Нам нужно выполнить еще одну проверку: поле логина должно содержать уникальное значение. Проверить это можно, разумеется, только серверными средствами. Создадим для логина пользовательский валидатор CustomValidate, назначим ему свойство ControlToValidate= имя_текстового_поля_для_логина и зададим обработчик ServerValidate, например, с именем LoginValidate. Текст обработчика помещаем в файл RegReader. aspx. cs:

protected void LoginValidate(object source,

ServerValidateEventArgs args)

НЕ нашли? Не то? Что вы ищете?

{

DataView DataView1;

SqlDataSource1.SelectCommand =

"SELECT * FROM Readers WHERE login=@login";

DataView1 = (DataView)SqlDataSource1.Select

(DataSourceSelectArguments. Empty);

if (DataView1.Count!= 0)

{

args. IsValid = false;

}

}

В этом обработчике нам нужно обратиться к базе данных и проверить, не существует ли уже такого логина в таблице Readers. С помощью уже заданного источника данных формулируем запрос на выборку. Источник данных имеет соответствующие средства для этого: свойство SelectCommand и метод Select.

В выполняемой команде в качестве значения логина используется так называемый параметр команды SELECT с именем @login. Его следует предварительно объявить в тексте сценария следующим образом:

<SelectParameters>

<asp:ControlParameter ControlID="txtlogin" Name="login"

Type="String" />

</SelectParameters>

(можно также задать этот параметр запроса визуальным образом в построителе запроса через свойство SelectQuery источника данных). Чтобы получить значение из элемента управления на форме, параметр связывается с элементом управления через свойство ControlID.

Для получения результатов запроса будем использовать объект DataView. В этот объект сохраняем результаты запроса. Нам нужно всего лишь проверить, пустая ли получилась выборка или нет. Если выборка не пустая, значит, такой логин уже есть в базе, и пользователь должен будет придумать себе другое имя.

Наконец, когда пользователь заполнит корректно все данные, мы будем записывать их в базу данных. Создадим обработчик для кнопки «Зарегистрировать» и назначим его на событие Click кнопки:

protected void Save_Click(object sender, EventArgs e)

{

if (Page. IsValid)

{

SqlDataSource1.InsertCommand = "INSERT INTO readers (login, password, fio_reader, passport, datebird, addr_reader, tel_reader, email_reader VALUES (@login, @password, @fio_reader, @passport, @datebird, @addr_reader, @tel_reader, @email_reader)";

SqlDataSource1.Insert();

}

}

В этом обработчике мы будем выполнять команду Insert, но только в том случае, когда текущая страница (Page) является корректной (IsValid).

Для добавления новой строки у источника данных есть удобные свойство InsertCommand и метод Insert. Свойство InsertCommand содержит код выполняемой команды, а метод Insert запускает эту команду на выполнение.

В выполняемой команде в качестве значений полей используются так называемые параметры команды insert: @login, @password и т. п. Их следует предварительно объявить в тексте сценария следующим образом (или задать в построителе запроса InsertQuery источника данных):

<asp:SqlDataSource... >

<InsertParameters>

<asp:ControlParameter ControlID="txtlogin"

Name="login" Type="String" />

<asp:ControlParameter ControlID="txtpassword"

Name="password" Type="String" />

...

</InsertParameters>

</asp:SqlDataSource>

Чтобы получить значения из элементов управления на форме, каждый из параметров связывается с некоторым элементом управления через свойство ControlID.

И, наконец, разработаем страницу для авторизации читателей.

Авторизация читателей

Сценарий для авторизации читателей будет несколько отличаться от сценария авторизации сотрудников. Создадим файл login_reader.aspx, разместим в нем метки, текстовые поля, валидаторы непустоты и кнопку. Для того чтобы в поле пароля скрывать набираемые символы, зададим у него свойство textMode= Password.

Ниже поместим метку красного цвета с именем Message, текстом «Неверные логин/пароль» и установим у нее свойство visible=false.

Добавим на форму источник данных SQLDataSource, назначим ему, как и раньше, ConnectionString и через построитель запроса SelectQuery сформулируем запрос

Select * from readers where login=@login AND password=@password

Здесь же в построителе запроса добавим параметры запроса @login и @password и свяжем их с элементами управления – текстовыми полями для логина и пароля.

Свяжем с кнопкой следующий обработчик:

protected void Login_Click(object sender, EventArgs e)

{

DataView DataView1;

DataView1 = (DataView)SqlDataSource1.Select

(DataSourceSelectArguments. Empty);

if (DataView1.Count == 0)

{

Message. Visible = true;

}

else

{

Session. Add("reader", txtLogin. Text);

Response. Redirect("default_reader. aspx");

}

}

Так же, как и в сценарии регистрации, проверяем, есть ли в базе данных пользователь с этим логином (добавляем только условие для проверки пароля). Если такого пользователя нет, то на экран показываем сообщение об ошибке.

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

Для выхода читателя из авторизованного режима создадим сценарий logout_reader.aspx с единственным обработчиком, который удаляет переменную сессии с именем читателя и выполняет переадресацию на главную страницу сайта:

protected void Page_Load(object sender, EventArgs e)

{

Session. Remove("reader");

Response. Redirect("default. aspx");

}

Задание для самостоятельной работы. Этап 3.

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

Этап 4. Разработка мастер-страниц


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

Подпись: Элемент1

Мастер-страница Текущая страница

Мастер-страницы имеют расширение. master, по умолчанию первая строка сценария имеет вид:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile= "MasterPage. master. cs" Inherits="librarian_MasterPage" %>

Внутри мастер-страницы должна быть по крайней мере одна заготовка – место для вставки кода текущей страницы, которое имеет уникальный идентификатор в рамках страницы:

<asp:contentplaceholder id="ContentPlaceHolder1"

runat="server">

</asp:contentplaceholder>

Каждая конкретная текущая страница, использующая мастер-страницу, при создании по умолчанию имеет вид:

<%@ Page Language="C#"

MasterPageFile="~/librarian/MasterPage. master"

AutoEventWireup="true" CodeFile="Search. aspx. cs"

Inherits="librarian_Search" Title="Поиск и просмотр" %>

<asp:Content ID="Content1"

ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

</asp:Content>

Здесь является обязательной ссылка на мастер-страницу: MasterPageFile="~/librarian/MasterPage. master", можно задать заголовок для страницы: Title="Поиск и просмотр", а также должен присутствовать хотя бы один элемент для вставки в мастер-страницу <asp:Content ... > ... </asp:Content> у которого значение ContentPlaceHolderID совпадает с заданным значением id тэга <asp:contentplaceholder> в мастер-странице.

Создадим, например, мастер-страницу для АРМ библиотекаря:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage. master. cs" Inherits="librarian_MasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd">

<html xmlns="http://www. w3.org/1999/xhtml" >

<head runat="server">

<title>Библиотека</title>

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14