Вы неправильно понимаете, как работает asp.net. Код вашего сервера запускается в ответ на запрос браузера на complete html-страницу. Это верно даже тогда, когда все, что вы действительно хотите сделать, это запустить некоторый код нажатия кнопки. вся страница должна быть перестроена с нуля, даже на обратной передаче. Это просто способ веб-форм.
Как только страница отображается в браузере, этот экземпляр класса вашей страницы будет уничтожен . При следующей обратной передаче вы снова начнете с нуля, с заметными исключениями сеанса, состояния просмотра и кэша приложения. Даже предыдущий экземпляр DOM страницы в браузере заменен.
Поэтому, когда вы устанавливаете свойство text метки, вы ничего не обновляете визуально в браузере. Все, что вы делаете, это обновляете некоторое временное хранилище в вашем классе страниц. На последнем этапе выполнения кода вашего сервера все эти временные переменные используются для визуализации заполненного HTML-кода, и ответ в конце концов отправляется в браузер и показывается пользователю.
Этого должно быть достаточно, чтобы понять, почему ваш код работает не так, как ожидалось. Он запускает весь кода в методе до того, как любые изменений вашего свойства попадут в браузер. Поэтому единственное, что видит пользователь, - это конечное состояние операции.
Теперь ajax может немного усложнить ситуацию. При использовании элемента управления ajax вы, возможно, больше не обновляете всю страницу, но концепция по-прежнему применима: один запрос сделан, один ответ получен и используется для обновления всего контекста запроса. Вы можете еще больше запутать вещи, если у вас есть много javascript для обработки результата запроса ajax.
К сожалению, нет быстрого исправления для кода, который вы разместили. Вам нужно подумать о том, как это действительно работает, и решить, как вы хотите, чтобы ваша страница работала.