#asp.net #postback
#asp.net #обратная передача
Вопрос:
Я знаю, что это очень распространенный вопрос, но, похоже, моя ситуация немного типична.
Я извлекаю значение, которое будет отображаться при textbox
загрузке страницы.
поэтому не имеет значения, сколько загрузок страницы произойдет, я получу правильное значение.
page_load()
{
TBName.Text = XYZObject.getName();
}
дело в том, что в точке останова этот текст показывает правильное значение, но когда я продолжаю и захожу на веб-страницу, он снова показывает старое значение.
в чем может быть проблема???
Спасибо
Комментарии:
1. можете ли вы вставить сюда HTML этого текстового поля?
2. Прежде всего, если что-то будет одинаковым при загрузке страницы, поместите это в Post. Это обратная отправка… В текущем случае — есть ли у вас какое-либо событие в самом текстовом поле?
Ответ №1:
Нет, @harish, ваша ситуация совсем не типична. На самом деле, это наиболее распространенная ситуация в asp.net по-моему, мир.
Здесь вы имеете дело со случаем, когда вы нажимаете на точку останова и загружается ViewState, т. е. применяется к состоянию элементов управления, и у вас есть правильное значение, введенное пользователем. В итоге вы получаете значение, которое вы снова присвоили в своем блоке кода при загрузке страницы.
попробуйте это вместо:
page_load()
{
if(!IsPostBack)
TBName.Text = XYZObject.getName();
}
Ответ №2:
Проблема заключалась в том, что текстовое поле было доступно только для чтения.
Ответ №3:
может существовать другая функция, подобная «clearFields()», которая очищает текстовое поле. Или getName сначала возвращает строку, но затем она возвращается пустой, так что текстовое поле очищается.
я предполагаю две возможности.
Ответ №4:
Если я правильно понимаю, значение остается неизменным без отладки, но оно изменяется при отладке?
Продолжайте отладку с помощью F10 и покажите TBName.Text
в окне просмотра. Затем вы можете точно увидеть, в какой строке кода значение изменяется обратно.