Wednesday, June 15, 2011

Maintaining Browser History for Ajax events through script manager in

In one of our project we have requirement of maintaining history of Ajax events. After doing some search on the web I have found one interesting capabilities of Script Manager control. I have found that there is one property called “EnableHistory” which will enable history for all the Ajax Event for which you have created the History Point. So Let’s first take a simple example with Ajax Tab and we are maintaining history of tab Navigation. To add the Ajax tab we first need the AjaxToolKit. So I have download the AjaxToolKit and Added Reference to my project like below.


Once I have done with adding reference I have written some HTML code to create Three tab and Also added a script manager like following which Enable history =”true” property and Navigate event. Like following.

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
 CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
 <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
 <asp:ScriptManager id="scriptManager" runat="server" EnableHistory="true" OnNavigate="scriptManager_Navigate">
 <asp:UpdatePanel ID="updatePanelTab" runat="server" ChildrenAsTriggers="true">
         <asp:TabContainer ID="ajxTab" runat="server" ActiveTabIndex="0"  AutoPostBack="true" OnActiveTabChanged="ajxTab_ActiveTabChanged">
 <asp:TabPanel ID="homTab" runat="server" HeaderText="home" >
  <asp:TabPanel ID="aboutUsTab" runat="server" HeaderText="About us" >
                         About Us
  <asp:TabPanel ID="contactUsTab" runat="server" HeaderText="Contact us" >
                         Contact us


Here in the above Code I have created Three tabs Home,About us and Contact us and I have putted that in update panel and Also I have enabled “Autopostback” to true so whenever tab will be changed it will post back the page. So now let us do the server side part. Here I have written code in two events. First one is from the script manager navigate event which will fire when we navigate pages thorough browser history and another one is the ActiveTabChanged event which will fire when we change Tab. In Script manager navigate I have written code to select tab based on the state from navigate event. In ActiveTabchanged event I have written code to create navigation history point which will register that in browser history. Following is the code for that.

using System;
using System.Web.UI;

namespace WebApplication2
 public partial class _Default : System.Web.UI.Page
     protected void scriptManager_Navigate(object sender, HistoryEventArgs e)
         string state = e.State["historyPoint"];
         ajxTab.ActiveTabIndex = Convert.ToInt32(state);

     protected void ajxTab_ActiveTabChanged(object sender, EventArgs e)
        if(scriptManager.IsInAsyncPostBack && !scriptManager.IsNavigating)
So code is completed now lets run the application and Check it in browser. It will be loaded like below.

Now once you browse page with some tab you can see history is enabled in browser and you can go back and forward with browser navigations like following.


So that’s it. Isn’t that cool? Stay tuned for more.. Hope you liked it. Till that Happy programming.

Shout it
kick it on


  1. This is a nice article..
    Its very easy to understand ..
    And this article is using to learn something about it.., c#, javascript
    Thanks a lot..!

  2. Hello friend... you're doing a very good work... very nice blog... I've created a small website in which I've used ajax... I implemented in notepad.. Whenever I refresh my page, it moves to the homepage instead of displaying the page I'm expecting to... The state is not maintained... If you've the solution... please update... Thanks!


Your feedback is very important to me. Please provide your feedback via putting comments.

Search This Blog
About Me
My Photo

Full Stack Developer, Blogger, Microsoft Mvp, Mentor, Lifelong learner, 12+ Years of Experience for JavaScript, web and Microsoft technologies. ASP.NET MVC/Core, C#, Angular,Vue.js and node.js
Subscribe to my blog


My You tube channel- Please Subscribe
Youtube Video Playlist
My Mvp Profile
Follow us on facebook
Blog Archive
Total Pageviews