ASP.NET Ajax历史记录工作不正常
本文关键字:工作 不正常 记录 历史 NET Ajax ASP | 更新日期: 2023-09-27 18:24:14
我有一个ASP.NET/C#应用程序。
应用程序在UpdatePanel中包含一个PlaceHolder。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click"/>
<asp:AsyncPostBackTrigger ControlID="LinkButton2" EventName="Click"/>
<asp:AsyncPostBackTrigger ControlID="LinkButton3" EventName="Click"/>
</Triggers>
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible="false">
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
基本上,我在占位符中加载控件,这取决于使用函数点击了什么LinkButton
LoadControls("ControlName");
我希望实现用户使用浏览器返回按钮的功能以便在控件中导航。所以我使用AJAX历史记录如下:
我将当前控件ID保存在会话变量中
Session["current"]
我在脚本管理器中启用历史记录并添加一个事件处理程序
<asp:ScriptManager ID="ScriptManager" runat="server" EnableHistory="True" onnavigate="ScriptManager_Navigate" />
(下面将介绍事件处理程序)首先,我将在链接按钮的事件处理程序中创建一个新的历史点(它们都使用相同的处理程序)
string ControlId=Session["current"].ToString();
if (ScriptManager.IsInAsyncPostBack && !ScriptManager.IsNavigating)
{
ScriptManager.AddHistoryPoint("Hist", ControlId);
}
然后在Scriptmanager导航处理程序中
protected void ScriptManager_Navigate(object sender, HistoryEventArgs e)
{
string Controlid = "";
if (e.State["index"] != null)
{
Controlid = e.State["Hist"].ToString();
LoadControls(Controlid );
}
}
当我加载控件时,我可以前后导航,一切都很好
问题是:
1) 第一个问题
我第一次点击"返回"。历史记录返回2个步骤,而不是一个步骤(之后正常工作)。这就像上一个历史记录没有保存一样。
2) 第二个问题
在"后退"到第一步之后,我可以做一个额外的"后退",其中e.State["Hist"]将为null,并给我一个错误。当e.State["Hist"]为null时,如何禁用"Browser Back"按钮?
非常感谢你的帮助。我希望我是清白的。
如果你需要更多的信息/代码,我很乐意为他们提供
没关系。这只是一个bug。会话["当前"]正在保存以前的控件,而不是当前控件。现在已修复。如果有人需要一个创建ajax历史的小例子,我将不提这个问题。