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

ASP.NET hidden field not updating after postback

本文关键字:NET 隐藏 字段 ASP 更新      更新时间:2023-09-26

我的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,可以触发更新面板的更新:

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

到目前为止,一切都很好,但在我的updatepanel_Load事件中,我试图将值设置回"0":

sendingRequest.Value = "0";

回发后,这个值在客户端上永远不会更新并设置回0,我不知道为什么!

有人能帮忙吗?感谢

如果隐藏字段有问题,可以使用TextBox。使用css(display: none;)隐藏文本框可以获得与隐藏字段类似的结果。这并不完全漂亮,但却是一个可行的变通办法。

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

类似的场景在这里成功完成:

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

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

我在Code-Behind中设置了三个HiddenField,但在从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后,我忘记了在面板上调用更新。我不得不这么做,因为我的按钮是部分回发控件(UseSubmitBehavior=False)

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