Почему ASP.NET отправляет исходное значение элемента управления TextBox, когда содержимое было изменено?

У меня есть веб-форма, которая позволяет пользователю изменять данные в определенных полях (в основном элементы управления TextBox, с парой элементов CheckBox, DropDownList и одним элементом управления RadioButtonList) с помощью кнопки отправки для сохранения изменений. Довольно стандартные вещи. Суть в том, что мне нужно отслеживать, какие поля они модифицировали. Поэтому я использую элементы управления ASP.NET HiddenField для сохранения исходного значения, а затем при отправке сравниваю его со значением соответствующего элемента управления TextBox (например), чтобы определить, какие поля были изменены.

Однако, когда я отправляю форму и выполняю сравнение, значение элемента управления TextBox в исходном коде все еще отражает исходное значение, даже если я изменил содержимое TextBox, поэтому оно не регистрирует изменение. Вот пример набора пар TextBox / HiddenField (в данном случае фамилии, имена, отчества) в моей форме ASP.NET:

<div id="editName" class="editField" style="display: none">
    <asp:TextBox ID="tbxLName" runat="server" class="editable"></asp:TextBox>,
    <asp:TextBox ID="tbxFName" runat="server" class="editable"></asp:TextBox>
    <asp:TextBox ID="tbxMName" runat="server" class="editable"></asp:TextBox>
    <asp:HiddenField ID="hdnLName" runat="server" />
    <asp:HiddenField ID="hdnFName" runat="server" />
    <asp:HiddenField ID="hdnMName" runat="server" />
</div>

Я устанавливаю исходные значения всех этих элементов управления (".Text" для элементов управления TextBox, ".Value" для элементов управления HiddenField) на PageLoad в коде позади.

Вот пример, где я делаю сравнение, когда я отправляю форму (я добавляю имя поля, старое значение и новое значение в объекты List <string>, если значения различаются):

if (tbxLName.Text != hdnLName.Value)
{
    changes.Add("ConsumerLastName");
    oldVal.Add(hdnLName.Value);
    newVal.Add(tbxLName.Text);
}

Но когда я ввожу новое значение в элемент управления TextBox и нажимаю Отправить:

затем пошагово просматривайте код в отладчике, он показывает мне, что значение элемента управления остается прежним:

Почему происходит сравнение с исходным значением TextBox, даже если при нажатии кнопки «Отправить» появляется новое значение?

Обновление: @David получает за это кредит, хотя он и не опубликовал его как ответ - я забыл включить метод для предварительного заполнения исходных значений элементов управления в проверке для IsPostBack; Я действительно должен был знать лучше, я делаю это довольно давно!

Ответы на вопрос(4)

Ваш ответ на вопрос