Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
224
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

Visual Baste .Net

Private Sub Page_load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

‘ Этот код исполняется при первом отображении страницы.

If Not IsPostBack Then

Если браузер поддерживает cookies...

If Request.Browser.Cookies Then

’ ...создать cookie...

Dim cookUname As New HttpCookie(“UName")

cookUname.Value = "Жетон"

' ... и добавить его к отклику. Response.Cookies.Add(cookUname)

End If

End If

End Sub

Visual c#

private void Page_Load(object sender, System.EventArgs e)

{

// Исполняется при первом отображении страницы

if(!IsPostBack)

// Если браузер поддерживает cookies...

if(Request.Browser.Cookies)

{

// ...создать cookie...

HttpCookie cookUname = new HttpCookie(“UName”);

cookUname.Value = “Жетон”;

// ... и добавить к отклику

Response.Cookies.Add(cookUname);

}

}

Лекция 10. Сохранение сведений о состоянии Способы сохранения сведений о состоянии

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

  • строки запросов – необходимы для передачи информации между запросами и откликами в составе Web-адреса. Строки запросов видны пользователю, поэтому в них нельзя передавать секретную информацию, например пароли;

  • файлы cookie – применяются для хранения небольших порций информации на клиентской машине. Клиент может отказаться от записи cookie, это нужно предусмотреть при написании кода;

  • состояние отображения – ASP.NET хранит элементы, записанные в страничное свойство View State, в скрытых полях страницы;

  • переменные состояния Session – требуются для хранения данных, локальных для текущего сеанса (доступных единственному пользователю);

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

Использование строк запросов

Строки запросов позволяют пересылать вместе с адресом дополнительную информацию. В HTML-тэгах гиперссылок строка запроса следует после знака вопроса:

<А HREF= "WebForm1.aspx?UName=Wombat">Пример строки запроса.</A>

Чтобы переслать строку запроса в коде, ее следует добавить к адресу, передаваемому методу Redirect. Ниже показан обработчик события Click, функционально эквивалентный предыдущему HTML-тэгу:

Visual Basic .NET

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click

' Отобразить страницу еще раз с учетом строки запроса. Server.Redirect("WebFormT.aspx?Wame=Wombat”)

End Sub

Visual C#

private void Button1_Click(object sender, System.EventArgs e)

{

// Отобразить страницу еще раз с учетом строки запроса.

Response.Redirect("Webforffl1.aspx?UName=Wombat");}

Для извлечения строк запросов в коде применяется метод Query String объекта Request. Следующий код отображает элемент Uname, извлеченный из строки запроса, созданной в предыдущих примерах:

Visual Basic .NET

Private Sub Page._Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

' Отобразить строку запроса.

Response.Write(Request.QueryString("UName"))

End Sub

Visual C#

private void Page_Load(object sender, System.EventArgs e)

{

// Отобразить строку запроса.

Response,Write(Request.QueryString["UName"]);

}

Использование файлов cookie

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

Следующий код проверяет, разрешает ли браузер запись cookie, и если да, сохраняет личные параметры пользователя.

Visual Basic .NET

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

' Этот код исполняется при первом отображении страницы.

If Not IsPostBack Then

' Если браузер поддерживает файлы cookie...

If Request.Browser.Cookies Then

'...создать cookie...

Dim cookUPrefs As New HttpCookie("UPrefs")

CookUPrefs.Value = "English"

'... и добавить в отклик.

Response.Cookies.Add(cookUPrefs)

End If

End If

End Sub

Visual C#

private void Page_Load(object sender, System.EventArgs e){

// Этот код исполняется при первом отображении страницы. if(!IsPostBack)

// Если браузер поддерживает файлы cookie...

if(Request.Browser,Cookies){

// ...создать cookie...

HttpCookie cookUPrefs = new HttpCookie(“UPrefs");

cookUPrefs.Value = "English";

// ...и добавить в отклик. Response.Cookies.Add(cookUPrefs);

}

}

Следующий код проверяет наличие файла cookie, и если проверка успешна, получает его.

Visual Basic .NET

Private Sub Page_load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

' Этот код исполняется при первом отображении страницы.

If Not IsPostBack Then

' Если браузер поддерживает файлы cookie...

If Request.Browser.Cookies Then

' ...проверить, существует ли cookie UPrefs.

If Not IsNothing(Request.Cookies("UPrefs")) Then

' Сохранить значение cookie.

Session(“Lang") = Request.Cookies(“UPrefs”).Value

End If

End If

End If

End Sub

Visual C#

private void Page_Load(object sender, System.EventArgs e){

// Этот код исполняется при первом отображении страницы, if(!IsPostBack)

// Если браузер поддерживает файлы cookie...

if(Request.Browser.Cookies)

// ...проверить, существует ли cookie UPrefs.

if(Request.Cookies["UPrefs"] != null)

// Сохранить значение cookie.

Session["Lang"] = Request.Cockies["UPrefs"].Value;

}

Использование состояния отображения

Свойство ViewState служит для хранения данных в скрытых полях страницы. Поскольку ViewState сохраняет данные в странице, этот способ годится лишь для тех элементов, которые можно сериализовать. Для сохранения в ViewState более сложных элементов их придется сначала преобразовать в строку, а после извлечения – вернуть в исходный вид.

Следующий код извлекает текст из текстового поля и помещает его в ячейки таблицы, расположенной на странице. Поскольку нельзя хранить объекты непосредственно в свойстве ViewState, процедура Button1_Click сначала сохраняет полученные строки в ViewState, а затем процедура Page_Load создает на основе сохраненных текстовых строк элементы управления, составляющие таблицу.

Соседние файлы в папке ПвИ