The need for a history plugin for my own Ajax paging problems in Microsoft Ajax made me create this plugin. It's best described in another article, so instead of just repeating myself
http://www.aspcode.net/articles/l_en-US/t_default/ASP.NET/ASP.NET-2.0/Ajax/ASP.NET-AJAX-formally-Atlas/Accessible-Ajax-calls-2--solving-history-problem_article_453.aspx
and (more advanced sample - used together with paging)
http://www.aspcode.net/articles/l_en-US/t_default/ASP.NET/ASP.NET-2.0/Ajax/ASP.NET-AJAX-formally-Atlas/Accessible-Ajax-calls-3--history-and-Ajax-calls_article_454.aspx
In short I have ported a JQuery plugin ,thanks Taku Sano (Mikage Sawatari), and added a few extras to make it work as I want.
To use it you just add a script reference
<asp:ScriptReference Path="scripts/aspcodehistory.js"/>
and whenever you want a new item to be added to browser history you call
ASPCode.net.History.setLocation(hashstate);
where hashstate is what will be added to the url after #. Remember it should so to speak describe the state and you should be able to restore state from it.
The examples above describes it pretty good I hope - and there's a download in those articles with all files (ASPSX cs, JS).
The download for this article only contains the js file - nothing more.