我正在使用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 );
}
注意