2009-07-10 2 views
3

У меня есть два скрытых элементы управления:скрытого значения поля утрачено после постбэк

<asp:HiddenField runat="server" id="pageHeader" /> 
<asp:HiddenField runat="server" id="pageInformation" /> 

Я зовем следующие функции от главной страницы:

show_tip(this, document.getElementById('ctl00_pageInformation').value, document.getElementById('ctl00_pageHeader').value); 

и я передаю значение в скрытом поле на странице .cs в загрузке страницы следующим образом:

string message = Request.Form["pageInformation"]; 
if (string.IsNullOrEmpty(message)) 
{ 
     ((HiddenField)Master.FindControl("pageHeader")).Value = pageHeading; 
     ((HiddenField)Master.FindControl("pageInformation")).Value = pageInformation; 
} 

Это работает отлично, но на странице POSTBA CK, скрытые поля теряют свою ценность. Как сохранить значения после обратной передачи?

+0

Вы назначая любые значения для этих скрытых полей на постбэка? Пожалуйста, внимательно посмотрите на свой код и разместите его здесь, если это возможно. – Kirtan

+0

Нет, я ничего не делаю после обратной передачи, я уже вставил код – 2009-07-10 07:00:04

+0

. Посмотрите на следующие 2 ссылки: вы можете найти решение из одного из следующих: - [есть способ удержать значения? - потеряно в postback] (http://stackoverflow.com/questions/2670327/is-there-a-way-to-hold-the-values-lost-in-postback) - [Скрытое значение, присвоенное js, потерянное после обратной передачи ] (http://stackoverflow.com/questions/6270085/hidden-value-assigned-in-js-lost-after-postback) Сообщите мне свои результаты. –

ответ

2

ОК, это то, что вы делаете.

Две функции и скрытое поле. Первые функции в JS добавляют обработчик, который получает значения из скрытых полей и сохраняет их в переменных. Вторая функция в JS добавляет обработчик, который получает значения из переменных и помещает их обратно в скрытые поля.

<script type="text/javascript"> 
     var txt1; 
     var prm = Sys.WebForms.PageRequestManager.getInstance(); 
     prm.add_beginRequest(BeginRequestHandler); 
     prm.add_endRequest(EndRequestHandler); 

     function BeginRequestHandler(sender, args) { 
      txt1 = $get('<%= hdntxt1.ClientID%>').value; 
     } 
     function EndRequestHandler(sender, args) { 
      $get('<%= hdntxt1.ClientID%>').value = txt1; 
     } 
</script> 
<asp:HiddenField runat="server" ID="hdntxt1" Value="" /> 

, Вам не нужно использовать скрытые поля, однако, если другие части формы необходимо получить значения, то эти значения будут под рукой в ​​любое время, независимо от постбэков!

0

Я предполагаю, что ваше скрытое значение поля получает сброс после сообщения. Попытайтесь держать свой код внутри блока, если cheking для постбэка

if(!ispostback) 
{ 
string message = Request.Form["pageInformation"]; 
if (string.IsNullOrEmpty(message)) 
{ 
    ((HiddenField)Master.FindControl("pageHeader")).Value = pageHeading; 
    ((HiddenField)Master.FindControl("pageInformation")).Value = pageInformation; 
} 

} 
Смежные вопросы