ASP.NET隐藏字段在回发后不更新

时间:2011-06-17 00:56:36

标签: javascript .net asp.net postback

我的ASP页面上有一些代码如下:

<asp:UpdatePanel runat="server" id="updatepanel1" UpdateMode="Conditional" onload="updatepanel1_Load" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:HiddenField id="sendingRequest" runat="server" Value="0" />
....
</ContentTemplate>
</asp:UpdatePanel>

我的页面上还有一些javascript用于触发updatepanel的更新:

var sendingRequest = document.getElementById("<%=sendingRequest.ClientID%>");
sendingRequest.value = "1";
__doPostBack('<%= updatepanel1.ClientID %>', '');

到目前为止一切正常,但在我的updatepanel1_Load事件中,我尝试将值设置回“0”:

sendingRequest.Value = "0";

这个值永远不会在回发后更新并在客户端上设置为0,我无法弄清楚原因!

有人可以帮忙吗?感谢

4 个答案:

答案 0 :(得分:5)

如果您遇到隐藏字段的问题,可以改用TextBox。使用css(display: none;)隐藏文本框以获得与隐藏字段类似的结果。它不完全漂亮,但它是一个可行的解决方法。

答案 1 :(得分:0)

尝试从服务器端调用registerstartupscript或类似的东西。我不记得确切的方法名称,但它的页面对象的一部分。这将在客户端回发后注册您想要执行的任何JavaScript。

答案 2 :(得分:0)

此类似的方案在此成功完成:

http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

确保您遵循相同的步骤 - 我看不到您的所有代码。首先尝试使用标签,以确保它作为可见控件更新。如果可行,则使用隐藏值缩小范围,以确保隐藏控件的行为不同。

答案 3 :(得分:0)

我在Code-Behind中设置了三个HiddenFields时遇到问题,但是从JQuery轮询时未设置它们的值。

我的问题原来是我的母版页使用UpdatePanel,并且在我的ASP.Net Init事件中,我打算使用有条件渲染的UpdatePanel。

Private Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
    mstr = CType(Master, Site)

    'setup partial rendering so Log can update asynchronously
    scriptManager = CType(mstr.FindControl("ScriptManager1"), ScriptManager)
    scriptManager.EnablePartialRendering = True
    scriptManager.AsyncPostBackTimeout = 28800
    CType(mstr.FindControl("UpdatePanel1"), UpdatePanel).UpdateMode = UpdatePanelUpdateMode.Conditional
    CType(mstr.FindControl("UpdatePanel1"), UpdatePanel).ChildrenAsTriggers = False
End Sub

问题是在设置HiddenFields之后,我忘记了在面板上调用update。我必须这样做,因为我的按钮是部分回发控件(UseSubmitBehaviour = False)

    hfParams.Value = paramlist.ToString()
    hfForms.Value = formlist.ToString()
    hfStartJob.Value = "True"
    CType(mstr.FindControl("UpdatePanel1"), UpdatePanel).Update()