- •16.Серверные элементы управления
- •17.Приложения asp.Net.
- •18.Управление состоянием в asp.Net.
- •19.Передача информации между страницами
- •20.Архитектура ado.Net.
- •21.Поставщики данных в ado.Net
- •22.Cтандартизация в Адо.Нет
- •24.Правила безопасного кодирования
- •25.Механизм конвейер безопасности
- •28.СравненеиеSilverlightvsFlash.
- •29.Особенности работы с анимациями в SilverLight
- •30.Профили
18.Управление состоянием в asp.Net.
Состояние представления (viewstate) — это вариант, который должен рассматриваться самым первым при необходимости хранения информации в пределах единственной страницы. Веб-элементы управления ASP.NET используют состояние представления по умолчанию. Оно позволяет им сохранять значения свойств между операциями обратной отправки. С помощью свойства ViewState в коллекцию состояния представления можно добавлять собственные данные. Такие данные могут относиться к простым типам или быть специальными объектами.
19.Передача информации между страницами
Одним из самых серьезных ограничений состояния представления является его тесная связь с конкретной страницей. Когда пользователь переходит на другую страницу, эта информация утрачивается. Существует несколько решений данной проблемы и то, какое из них будет наилучшим, зависит от имеющихся требований.
Наиболее распространенный подход заключается в передаче информации с помощью строки запроса в URL-адресе. Именно этот подход часто применяется в поисковых службах. Например, при выполнении поиска на веб-сайте Google пользователь перенаправляется на новый URL-адрес, который включает заданные условия поиска:
http://www.google.ru/search?q=organic+gardening
Строка запроса — это часть URL-адреса, которая находится после вопросительного знака. В данном случае она определяет единственную переменную по имени q, которая содержит строку organic+gardening. Преимущество строки запроса в том, что она проста и не привносит никакой нагрузки на сервер. В отличие от межстраничной отправки, строка запроса может переносить одну и ту же информацию со страницы на страницу. Однако с ней связано несколько ограничений:
• Информация ограничивается простыми строками, которые должны содержать символы, допустимые для URL-адресов.
• Информация визуально доступна пользователю и любому другому работающему в Интернете человеку.
• Предприимчивый пользователь может решить изменить строку запроса и предоставить новые значения, которые программа никак не ожидает получить, и от которых она не защищена.
• Многие браузеры накладывают ограничения на длину URL-адреса (которая обычно не должна превышать 1-2 Кбайт). Поэтому в строку запроса нельзя помещать большой объем информации, к тому же все равно придется выполнять проверку на предмет совместимости с большинством браузеров.
Чтобы сохранить информацию в строке запроса, ее необходимо поместить туда самостоятельно. К сожалению, способа сделать это с помощью коллекций не существует. Как правило, это означает, что придется использовать специальный элемент управления HyperLink или оператор Response.Redirect(), подобный показанному ниже:
// Перейти на страницу page.aspx. Отправить единственный аргумент
// строки запроса по имени recordID и установить его в 10
intrecordID = 10;
Response.Redirect("page.aspx?recordID=" + recordID.ToString());
Для отправки множества параметров они должны разделяться с помощью амперсанда (&):
Response.Redirect("page.aspx?recordID=10&mode=full");
Получающей странице легче работать со строкой запроса. Она может извлекать значения из словарной коллекции QueryString, предоставляемой встроенным объектом Request, как показано ниже:
string ID = Request.QueryString["recordID"];
Если строка запроса не содержит параметр recordID или если она содержит этот параметр, но без значения, строка идентификатора устанавливается в null. Обратите внимание, что информация всегда извлекается в виде строки, которая затем может быть преобразована в другой простой тип данных. Значения в коллекции QueryString индексируются по имени переменной.
К сожалению, ASP.NET не предоставляет механизма для автоматической проверки или шифрования данных строки запроса. Он мог бы работать в основном так же, как механизм защиты состояния представления. Без этой функциональности строка запроса очень уязвима
