Поиск
 

Web-Приложения

Создание Web приложений на технологии ASP.NET

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Несколько слов о ViewState и серверных контролах

Любознательные наверное уже увидели что в Visual Studio есть два раздела с похожими компонентами
например такие как TextBox (текстовое поле для редактирования).
Один контрол находится в разделе standard (TextBox) другой находится в разделе HTML (Input text).

В чем же их отличие?
Для начала добавим на страницу два этих контрола



<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Text1" type="text" />




Кроме того, что они объявляются по разному в TextBox добавлен параметр runat="server"
он говорит компилятору о том, что исполнение данного контрола будет происходить на сервере.
Это нечто аналога TextBox в WinForms , то есть контрол имеет свойства, методы и события.

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

Если же серверные контролы такие хорошие: много умеют и красиво выглядят, как же они это все хранят?
Те кто писал на обычном PHP или HTML то наверное знают чтобы у пользователя всягда была нужная переменная на каждой странице
ее надо все время передавать через запросы (сейчас мы не говорим о Cookie) например через input type=hidden

В ASP.NET Есть механизм, который называется ViewState.
На самом деле ViewState это тот же input type=hidden в который добавляются все свойства серверных контролов.
По умолчанию все свойства контролов серелизуются в ViewState.

Таким образом задав например цвет контрола красным - он будет красным на всех страницах после каждого постбэка (посылки запроса) пользователя.
При инициализации страницы все доступные свойства из ViewState подставляются в наш серверный контрол.
Для HTML контролов такое разумеется не выполняется.

При всех своих плюсах ViewState имеет минус - Размер.
При большом количестве контролов на странице и большом изменении их свойств ViewState может сильно раздуваться.
Необходимо позаботиться о пользователях с низкими скоростями соединения с интернетом.

Можно удалить ViewState двумя способами:
1. Удаялить для всей странице целиком, указав директиву EnableViewState="false"



<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" EnableViewState="false" Inherits="_Default" %>



2. Выключить ViewState для отдельных контролов


<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false"></asp:TextBox>



Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (1 - 1 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии