在DoPostBack事件之后,ASP.NET HiddenField值为空

时间:2013-07-24 14:29:53

标签: jquery asp.net jquery-ui-tabs

在我继承的项目中,我有一个名为SpendSummContainer的控件。该控件有一个jquery-ui tabs对象。其中一个要求是,在将列放入编辑模式后,所选选项卡保持选中状态(该列具有执行DoPostBack的“编辑”链接并将列置于编辑模式)。

以下所有内容均来自SpendSummContainer控件。

标签是标准的jquery-ui标签,如下所示:

<div id="tabs">
    <ul>
    <li><a href="#tabs-1">First Tab</a></li>
    <li><a href="#tabs-2">Second Tab</a></li>
    <li><a href="#tabs-3">Third Tab</a></li>
    </ul>
<div id="tabs-1">Stuff goes here</div>
<div id="tabs-3">Stuff goes here</div>
<div id="tabs-2">Stuff goes here</div>
</div>

然后,我在表单上有一个ASP.NET隐藏字段,

<asp:HiddenField ID="activeTab" runat="server" />

最后,我有以下javascript,

<script type="text/javascript">
    $(document).ready(function () {
        $("#tabs").tabs({
            select: function (event, ui) {
                $('#<%= activeTab.ClientID %>').val(ui.index.toString());
            }
        });
    });
</script>

我已经通过在设置值后警告返回值来验证隐藏字段是否正确填充。

问题是当执行DoPostBack时,activeTab.value属性为空。

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim selectedTab As string = activeTab.Value
End Sub

所以我的问题是,在DoPostBack之后如何保持隐藏字段的值?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用select事件替换activate,并使用ui.newTab.index()吗?

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">First Tab</a></li>
        <li><a href="#tabs-2">Second Tab</a></li>
        <li><a href="#tabs-3">Third Tab</a></li>
    </ul>
    <div id="tabs-1">1 Stuff goes here</div>
    <div id="tabs-2">2 Stuff goes here</div>
    <div id="tabs-3">3 Stuff goes here</div>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $("#tabs").tabs({
            activate: function (event, ui) {
                $('#<%= activeTab.ClientID %>').val(ui.newTab.index());
            }
        });
    });
</script>
<asp:HiddenField ID="activeTab" runat="server" />

答案 1 :(得分:0)

DoPostBack你是什么意思?你的意思是编辑链接是一个回发到表单的ASP.NET按钮控件,或者你的意思是它是一个jquery ajax函数?如果它是后者,那么它实际上不是回发,而是从服务器的角度来看的新请求。

这是我唯一可以想到的值不存在的值,因为如果它是一个表单提交然后是Page_Load事件,那么webforms生命周期应该使用表单中传递的值重新填充隐藏值。