Так события загрузки страницы потока, как:
- Действия по форме вызывает Postback
- Page_Load событие
- Кнопка Нажмите Событие
- Рендер/Unload Событие
На шаге 2 вы читаете переменную из viewstate и устанавливаете метку. На шаге 3 вы задаете значение в представлении.
Как вы заметили, вы используете события в неправильном порядке. Существует два способа решения этой проблемы: поместите код метки метки в событие Render/Unload. Другой способ состоит в том, чтобы реорганизовать ваш код таким образом, чтобы метка была установлена с помощью события Click Button, а не в событии Page_Load; который я бы рекомендовал в качестве правильного курса действий.
Возможно, вы захотите заказать What is the ‘page lifecycle’ of an ASP.NET WebForm?, чтобы получить лучшую ручку на жизненном цикле страницы.
В ответ на комментарий: Если есть несколько меток для установки, вы можете посмотреть встроенный код, чтобы установить метки.Код будет выглядеть следующим образом:
CodePage
<asp:Label id="id1" runat="server" text="<%=Label1Text%>" />
CodeBehind
private string m_Label1Text;
public property string Label1Text {
get { return m_Label1Text; }
set { m_Label1Text = value; }
}
Таким образом, вы установите текст через свойство Label1Text и получает переданы в форме, когда он отображается. Вы можете попробовать это Tutorial здесь, если вам нужна дополнительная информация о кодировке.
Существует проблема с настройкой этой метки в событии click, так как есть много кнопок, которые сохраняют разные значения в viewstate, поэтому неэффективно устанавливать метку в событии кликов каждой кнопки. – samuel
Спасибо, это хорошо. – samuel
Хороший ответ, пояснение + пример + ссылки на документацию и ответы на комментарии. – samuel