|
Несколько слов о 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 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
|
|