ASP隐藏字段 - 客户端更新后,服务器端的值不会更新

时间:2017-01-04 03:44:43

标签: javascript c# jquery asp.net

我正在使用jQuery在ASP.Net网页中实现标签布局。

页面上有一些元素(例如按钮)可以引发服务器端事件以进行处理。此处理和随后的页面重新加载导致标签状态变为“损坏”状态。 (活动选项卡将更改回默认值)。为了解决这个问题,我在页面中添加了一个ASP Hidden Field元素,并使用它的值实体来跟踪活动标签。当隐藏字段的值发生更改时,会引发服务器端事件,以获取新的隐藏字段值并将其作为对象存储在会话中。

问题:更改选项卡后,隐藏字段值会在客户端上正确更新,但是,服务器上引发的事件不会更改。有没有人有解决方案?

JS

<script type="text/javascript">

    $(document).ready(function () {

        $(function () {
            $("#tabs").tabs();
            var selectedTab = document.getElementById('kLastTab').value;
            $('#tabs').tabs("option", "active", selectedTab);
            document.getElementById('tabs').style.visibility = "visible";
        });

        $("#create").on("click", function () {
            document.getElementById('kLastTab').value = '0';
            __doPostBack('kLastTab', '');
            alert(document.getElementById('kLastTab').value)
            $('#tabs').tabs("option", "active", $('tabs-1').index());
        });

        $("#manage").on("click", function () {
            document.getElementById('kLastTab').value = '1';
            __doPostBack('kLastTab', '');
            alert(document.getElementById('kLastTab').value)
            $('#tabs').tabs("option", "active", $('tabs-2').index());

        });

    });


</script>

ASP

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <hgroup class="title">
        <h1><%: Title %>.</h1>
        <h2>Create, Close & Search Jobs.</h2>
    </hgroup>
    <article>
        <div id="tabs" style="visibility:hidden">
            <ul>
                <li><a id="create" href="#tabs-1">Create</a></li>
                <li><a id="manage" href="#tabs-2">Manage</a></li>
            </ul>
            <div id="tabs-1">
                ........
            </div>
            <div id="tabs-2">
                ....
            </div>
        </div>
        <asp:HiddenField ID="kLastTab" runat="server" Value="0" OnValueChanged="kLastTab_ValueChanged"/>
    </article>
</asp:Content>

服务器端C#值更改事件

protected void kLastTab_ValueChanged ( object sender, EventArgs e )
{            
    selectedTab = kLastTab.Value;
    Debug.WriteLine( "HiddenField Value = " + kLastTab.Value );
    Session.Add( "selectedTab", selectedTab );
}

注意

  1. ClientIDMode设置为静态
  2. javascript警告确认隐藏字段的值在客户端正确更改。
  3. 值更改事件中的Debug.Writeline显示隐藏字段值未更改。

0 个答案:

没有答案