asp Скрытое поле .net не сохраняет значение при обновлении из кода позади

Я использую скрытое поле для хранения значения в asp Страница .net. Обычно я устанавливаю значение скрытого поля всякий раз, когда изменяется значение в форме, например имя, дата и т. Д. Поле находится в веб-форме, которая имеет главную страницу и находится в разделе содержимого:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <asp:HiddenField ID="hdnDirtyFlag" runat="server" Value='false' />

Я меняю значение поле в javascript путем вызова функции всякий раз, когда событие onchange запускается в других элементах управления в веб-форме:

<asp:TextBox CssClass="niceInput" ID="tbFirstName" runat="server" MaxLength="40" Width="150" onchange='SetHiddenVariable();'></asp:TextBox>

 <script type="text/javascript">
     function SetHiddenVariable() {
         // Set the value of the hidden variable so we know a field has been updated
         var hiddenControl = '<%= hdnDirtyFlag.ClientID %>';
         document.getElementById(hiddenControl).value = 'true';
     }
</script>

Пока все хорошо. Когда страница загружает значение скрытого поля, значение «false», и если я не изменяю какие-либо значения в веб-форме, оно остается false. Всякий раз, когда я меняю другой элемент управления, вызывается функция javascript, и значение скрытого поля обновляется до «истина». Опять же, все в порядке.

После отправки формы и обновления базы данных я установил для скрытого поля значение «false» в коде позади:

hdnDirtyFlag.Value = "false";

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

Кто-нибудь может объяснить, почему это так? Я прошел через код и сразу после изменения значения увидел, что значение «ложно». На странице есть asp: UpdatePanel, но скрытое поле не является частью этой панели.

EDIT:

Это код, который я использую для проверки значения поля в коде позади второй обратной передачи после того, как на последнем шаге первой обратной передачи было установлено значение false. По какой-то причине значение остается равным true во второй обратной передаче после того, как оно было установлено в true в javascript на стороне клиента, а затем снова в false в коде позади, как показано выше:

if (hdnDirtyFlag.Value == "true")
{
    UpdateSecurityObject(); 
}
20
задан Ciaran Bruen 15 February 2011 в 08:33
поделиться