我有两个隐藏的控件:
<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 上,隐藏字段会丢失其值。如何在回发后保留值?
答案 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;
}
}