回发后隐藏的字段值丢失

时间:2009-07-10 06:26:17

标签: asp.net javascript

我有两个隐藏的控件:

<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;
 }

这工作正常,但在页面 POSTBACK 上,隐藏字段会丢失其值。如何在回发后保留值?

2 个答案:

答案 0 :(得分: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="" />

您实际上并不需要使用隐藏字段,但是如果表单的其他部分需要获取值,则无论回发如何,这些值都可以随时使用!

答案 1 :(得分:0)

我猜您的隐藏字段值会在回发后重置。 如果块检索回发

,请尝试保留代码
if(!ispostback)
{
 string message = Request.Form["pageInformation"];
 if (string.IsNullOrEmpty(message))
 {
  ((HiddenField)Master.FindControl("pageHeader")).Value = pageHeading;
  ((HiddenField)Master.FindControl("pageInformation")).Value = pageInformation;
 }

}