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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
6 271
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // populate text boxes from database
    }
}

Are you initially loading the data only when !Page.IsPostBack? Also, is view state enabled for the text box?

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

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

Всем спасибо за ответы!

Другие вопросы по теме