Сообщение формы не содержит текстовых данных [ASP.NET C #]

У меня есть несколько элементов управления «ASP: TextBox» на форме (около 20).
Когда форма загружается, текстовые поля заполняются из базы данных.
Пользователь может изменить заполненные значения, и когда они отправляют форму, я беру значения, отправленные на сервер, и условно сохраняю их (определяется некоторой бизнес-логикой).
Все текстовые поля, кроме 1, работают как задумано.

Нечетное поле после обратной передачи не содержит обновленного значения, введенного пользователем в поле.
При отладке приложения ясно, что оно myTextBox.Textотражает старое предварительно заполненное значение, а не новое, предоставленное пользователем значение.
Каждое другое поле правильно отображает их соответствующие пользовательские значения.

Я нашел обходной путь.
Мое решение состояло в том, чтобы в основном извлечь значение текстового поля из Request.Formобъекта:, Request.Form[myTextBox.UniqueID]который содержит предоставленное пользователем значение.

Что здесь может происходить?
Как я уже упоминал, другие текстовые поля прекрасно воспринимают предоставленные пользователем значения, и с этим конкретным проблемным текстовым полем не связано никакой логики - оно просто берет значение и сохраняет его.
Основное различие между этим текстовым полем и другим состоит в том, что это многострочное поле (для ввода заметок), которое, как я считаю, отображается в виде HTML-тега «textarea» вместо тега «input» в ASP.NET.

22.08.2008 17:40:23
5 ОТВЕТОВ
РЕШЕНИЕ

Вы изначально загружаете данные только когда! Page.IsPostBack? Кроме того, включено ли состояние просмотра для текстового поля?

8
22.08.2008 17:43:41

Помните порядок жизненного цикла страницы, и где вы привязываете свою форму.

  • PreInit
  • В этом
  • нагрузка
  • Ваш обработчик событий управления

Если вы читаете значение в обработчике событий управления, но привязываете данные в Init или Load, у вас будет старое значение.

Хитрость заключается в том, чтобы всегда связывать данные в правильном событии или проверять обратную передачу и не связывать данные тогда.

1
22.08.2008 17:45:25

Я бы ответила Джонатану и проверила ваши настройки привязки данных.

Если вам не нужен ViewState для текстовых полей (т.е. обратная передача не происходит до отправки формы), вам следует отключить его.

Похоже, у вас нет проблем с сохранением данных (так как вы сказали, что вам удалось получить контроль для считывания правильных данных обратно). Поэтому я бы сказал, что проблема загружается в ваш код привязки данных.

2
23.05.2017 12:33:26

это происходит со мной все время.

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // populate text boxes from database
    }
}
6
22.08.2008 18:05:14

Вы изначально загружаете данные только когда! Page.IsPostBack? Кроме того, включено ли состояние просмотра для текстового поля?

Я почти забыл проверить ViewState, но в итоге не забыл проверить, что он не был отключен, прежде чем делать мой пост здесь на SO. Я даже установил EnableViewState = "true", чтобы убедиться.

Я нашел решение, и оно совпало с большинством ответов здесь. Форма действительно загружала свои данные более одного раза (что является преднамеренным поведением). Я реализовал специальный код для этого поля, и все хорошо.

Спасибо за ваши ответы, все!

1
26.08.2008 14:34:11