Оскільки Web-форми живуть дуже недовго, ASP.NET вживає спеціальні заходи для збереження даних, уведених в елементи керування Web-форми. З кожним запитом на сервер відправляються всі дані, які було введено в елементи керування, де вони записуються в елементи керування під час обробки події Page_Init. Тепер ці дані будуть доступні оброблювачеві події Page_Load.
Дані, які ASP.NET зберігає між передачею запитів, називаються станом відображення (view state) Web-форми. Стан відображення Web-форми доступно тільки усередині цієї Web-форми. Щоб зробити уведені в Web-форму дані доступними іншим Web-формам додатка, необхідно зберегти їх у змінних станів (в об'єктах Application або Session ). Ці об'єкти відрізняються областю дії:
· змінні станів на основі об'єкта Application доступні всім користувачам додатка, тому їх можна розглядати як глобальні змінні, які доступні декільком користувачам. Ці змінні дозволяється читати і записувати з будь-яких сеансів;
· змінні станів на основі об'єкта Session доступні в межах одного сеансу (тільки одному користувачеві). Змінні Session нагадують глобальні змінні стандартних Windows-додатків. Ці змінні станів доступні тільки в поточному сеансі.
|
|
Змінні Application і Session оголошуються інакше, ніж звичайні. Змінні станів створюються кодом «на льоту». Наступний код підраховує, скільки разів клацнули кнопку, і записує результат у змінну стану Session.
// Код з файлу Global.asax.es
protected void Session_Start(Object sender, EventArgs e)
{
// Ініціалізувати змінну стану Clicks Session
Session["Clicks"] = 0;
}
// Цей код узятий з файлу StateNEvents.asax.cs
private void Button1_Click(object sender, System. EventArgs e)
{
// Збільшити число натискань
Session["Clicks"] = (int)Session["Clicks"] + 1;
// Показати число натискань
Response.Write("Number of clicks: " + Session["Clicks"] + "<br>");
}
У змінних станів можна зберігати дані будь-якого типу, від звичайних цілочислених значень до об'єктів. Оскільки змінні станів відносяться до глобальних, необхідно виробити стратегію їх використання в додатку.
Увага! Як правило, у програмах на Visual C# змінні станів Application треба ініціалізувати перед використанням. Наприклад, перед перетворенням типів (int)Session[«Clicks»] змінну стану Clicks необхідно ініціалізувати, у противному випадку під час виконання ви одержите повідомлення про помилку: «Value null was found where an instance of an object was required».