Нам нужно также добавить подходящее объявление в код, реализующий форму (если оно не добавится автоматически):
public class WebForm1 : System.Web.UI.Page {
protected RainbowLabel rainbowLabel1;
...
В результате будет получено:
Поддержание состояния в специальном элементе управления
Каждый раз при создании элемента управления на сервере в ответ на запрос к серверу, он создается с самого начала. Это означает что любое простое поле элемента управления будет повторно инициализироваться. Чтобы элементы управления поддерживали состояние между запросами, они должны использовать
ViewState
, о чем требуется помнить при создании элементов управления.
Чтобы
проиллюстрировать это, добавим дополнительное свойство в элемент управления
RainbowLabel
. Мы добавив метод с именем
Cycle
, который циклически перебирает доступные цвета и использует хранимое поле
offset
для определения цвета первой буквы выводимой строки.
Это поле должно использовать
ViewState
элемента управления, чтобы быть устойчивым между запросами. Если это не сделано и поле инициализируется в элементе управления, то все будет работать неправильно.
Здесь будет показан код для обоих случаев, чтобы увидеть ловушку, в которую очень легко попасть. Сначала мы посмотрим на код, который не может воспользоваться
ViewState
:
public class RainbowLabel : System.Web.UI.WebControls.Label {