ASP.NET 3.5 Extensions带来什么
3. ASP.NET AJAX改进
在ASP.NET 3.5 Extensions中对于ASP.NET AJAX改进最重要的一点就是更好的浏览器历史的支持,是我们可以很方便的进行控制浏览器的前进、后退按钮。它提供了两种方式供我们选择,使用服务器端控件或者使用客户端脚本。下面我将用示例简单演示一下如何使用服务器段控件进行浏览器历史的控制。
添加ScriptManager控件,并设置其EnableHistory属性为true,允许浏览器的历史管理,以及OnNavigate处理为OnNavigateHistory函数,以便处理导航时的事件。同时EnableStateHash属性设为了false,主要是为了便于调试,以明文的方式进行状态的查看,如果实际使用的时候可以根据需要决定是否需要对状态进行Hash加密:
<asp:ScriptManager runat="server" ID="ScriptManager1"
OnNavigate="OnNavigateHistory"
EnableHistory="true"
EnableStateHash="false" />
创建浏览器历史点,在单击按钮时创建,通过AddHistoryPoint方法来添加:
public void ButtonClick(object sender, EventArgs e)
{
LabelHistoryData.Text = ((Button)sender).Text;
ScriptManager.GetCurrent(this).AddHistoryPoint(key, LabelHistoryData.Text);
}
进行导航处理:
public void OnNavigateHistory(object sender, HistoryEventArgs e)
{
LabelHistoryData.Text = Server.HtmlEncode(e.State[key]);
}
同时为了演示,需要在页面上添加三个按钮:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="Button3" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Panel runat="server" CssClass="box" ID="Content" Height="40px">
Date and Time:
<%= DateTime.Now.ToLongTimeString() %>
<br />
Page's refresh state:
<asp:Label runat="server" ID="LabelHistoryData" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<p />
<asp:Button runat="server" ID="Button1" Text="Key 1" OnClick="ButtonClick" />
<asp:Button runat="server" ID="Button2" Text="Key 2" OnClick="ButtonClick" />
<asp:Button runat="server" ID="Button3" Text="Key 3" OnClick="ButtonClick" />
上面的方式主要是采用了服务器端的方式进行ASP.NET AJAX中对于浏览器历史的支持,同样你也可以采用客户端脚本对浏览器历史进行管理,这里不再说明。