访问在JavaScript中更改了HiddenField值

时间:2015-09-15 15:52:27

标签: c# asp.net updatepanel

我有一个依赖于HiddenField值的JavaScript。这个HiddenField,我们将其称为needUpdate,是一个布尔值,当我的页面上的div需要使用JavaScript更新时,该布尔值设置为true。 needUpdate位于UpdatePanel,通过Timer进行更新。我尝试了两种不同的方法,两种方法都有效。第一种是将JavaScript放在更新面板之外,并使用我的PageRequestManager实例来运行脚本,如下所示:

<asp:ScriptManager ID="scriptManager" runat="server" />

<script type="text/javascript">
    function DoUpdate(sender, args)
    {
        if ('<%= needUpdate.Value %>' == 'true') {
            // Code here... //
        }
    }
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(DoUpdate);
</script>

 <asp:UpdatePanel ID="replay" runat="server" Visible="false" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="replayTimer" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
        <asp:HiddenField ID="needUpdate" runat="server" Value="false"/>
        <asp:Timer ID="replayTimer" runat="server" Interval="500" OnTick="replayTimer_Tick" />
        <!-- More Stuff Here -->
    </ContentTemplate>
</asp:UpdatePanel>

<div id="divToUpdate"></div>

现在上面运行脚本但是needUpdate中的值永远不会改变,即使它在后端被更改了。所以,我尝试了下一段代码,我将脚本放在ContentTemplate

UpdatePanel区域中
    <ContentTemplate>
        <asp:HiddenField ID="needUpdate" runat="server" Value="false"/>
        <asp:Timer ID="replayTimer" runat="server" Interval="500" OnTick="replayTimer_Tick" />

        <script type="text/javascript">
            function DoUpdate()
            {
                if ('<%= hf_needUpdate.Value %>' == 'true') {
                    // Code here... //
                }
            }
            DoUpdate();
        </script>
        <!-- More Stuff Here -->
    </ContentTemplate>
</asp:UpdatePanel>

虽然这更新了脚本区域,但从未调用过代码。有关如何通过UpdatePanel更改值以提供JavaScript函数的任何想法吗?

1 个答案:

答案 0 :(得分:1)

您正在将错误结果硬编码到JavaScript if语句中。什么进入页面:

'<%= hf_needUpdate.Value %>' == 'true' ??

'false' == 'true' ??

这永远不会改变您需要获取隐藏字段的当前值。

var needUpdate = document.getElementById("needUpdate").value;
if(needUpdate == "true) {
     // Do work
}
相关问题