<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>&lt;a href="http://weblogs.asp.net/bleroy"&gt;Tales from the Evil Empire&lt;/a&gt; : VB</title><link>http://weblogs.asp.net/bleroy/archive/tags/VB/default.aspx</link><description>Tags: VB</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>I'm now officially a slacker</title><link>http://weblogs.asp.net/bleroy/archive/2008/01/23/i-m-now-officially-a-slacker.aspx</link><pubDate>Wed, 23 Jan 2008 18:21:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5640447</guid><dc:creator>Bertrand Le Roy</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bleroy/rsscomments.aspx?PostID=5640447</wfw:commentRss><comments>http://weblogs.asp.net/bleroy/archive/2008/01/23/i-m-now-officially-a-slacker.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Well, at least a &lt;A class="" href="http://dotnetslackers.com/" mce_href="http://dotnetslackers.com"&gt;Dot Net Slacker&lt;/A&gt;...&lt;/P&gt;
&lt;P mce_keep="true"&gt;My &lt;A class="" href="http://dotnetslackers.com/articles/ajax/HandlingTheBackButtonFromServerCode.aspx" mce_href="http://dotnetslackers.com/articles/ajax/HandlingTheBackButtonFromServerCode.aspx"&gt;first article&lt;/A&gt; on &lt;A class="" href="http://dotnetslackers.com/" mce_href="http://dotnetslackers.com"&gt;DotNetSlackers&lt;/A&gt; just got published. It shows how to handle the back button with ASP.NET Ajax using pure server code.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Check it out &lt;STRIKE&gt;(registration required)&lt;/STRIKE&gt;:&lt;BR&gt;&lt;A href="http://dotnetslackers.com/articles/ajax/HandlingTheBackButtonFromServerCode.aspx"&gt;http://dotnetslackers.com/articles/ajax/HandlingTheBackButtonFromServerCode.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5640447" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bleroy/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/Microsoft+AJAX+Library/default.aspx">Microsoft AJAX Library</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/VB/default.aspx">VB</category></item><item><title>Screencast: how to enable server-side history management in an ASP.NET Ajax application</title><link>http://weblogs.asp.net/bleroy/archive/2008/01/04/screencast-how-to-enable-server-side-history-management-in-an-asp-net-ajax-application.aspx</link><pubDate>Sat, 05 Jan 2008 00:34:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5549146</guid><dc:creator>Bertrand Le Roy</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bleroy/rsscomments.aspx?PostID=5549146</wfw:commentRss><comments>http://weblogs.asp.net/bleroy/archive/2008/01/04/screencast-how-to-enable-server-side-history-management-in-an-asp-net-ajax-application.aspx#comments</comments><description>&lt;p&gt;I've recently recorded a screencast showing how to enable server-side history management (in other words, handling the back button) in an ASP.NET Ajax application. The whole video is less than 15 minutes total and I build the whole application from scratch in there (in VB).&lt;/p&gt; &lt;p&gt;I hope it shows just how simple history management is made by ASP.NET Ajax and that it helps understanding the state model that it's built on.&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0aa4c6bc-02cf-4bad-a057-ceb18f555ea4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="f168fd23-6662-4847-b5a6-cabe5e203921" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=0c4b85ad-9ee8-460d-84db-65fa13e8e52f&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://weblogs.asp.net/blogs/bleroy/WindowsLiveWriter/Screencasthowtoenable.NETAjaxapplication_E778/video67b13e9b2d47.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('f168fd23-6662-4847-b5a6-cabe5e203921'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=0c4b85ad-9ee8-460d-84db-65fa13e8e52f&amp;amp;from=writer\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;The same video in a variety of formats and in a resolution where the code is actually readable can be found here:&lt;br&gt;&lt;a title="http://www.asp.net/downloads/3.5-extensions/" href="http://www.asp.net/downloads/3.5-extensions/"&gt;http://www.asp.net/downloads/3.5-extensions/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For those people who find it difficult to cut and paste code from a video by doing a screen capture and then using OCR over it, here's the source code of the mini-app that's being built in the video:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Default.aspx:&lt;/strong&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ScriptManager&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="ScriptManager1"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&lt;/span&gt; 
    &lt;span style="color: rgb(255,0,0)"&gt;EnableHistory&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="True"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;EnableStateHash&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="False"/&amp;gt;&lt;br&gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;UpdatePanel&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="UpdatePanel1"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&amp;gt;
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Wizard&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Wizard1"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&amp;gt;
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardSteps&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardStep&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Title&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Step 1"&amp;gt;
&lt;/span&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="TextBox1"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"/&amp;gt;
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardStep&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardStep&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Title&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Step 2"&amp;gt;
&lt;/span&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="TextBox2"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"/&amp;gt;
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardStep&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardStep&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Title&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Step 3"&amp;gt;
&lt;/span&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="TextBox3"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"/&amp;gt;
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardStep&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WizardSteps&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Wizard&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;UpdatePanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Default.aspx.vb:&lt;/strong&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Partial&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Class&lt;/span&gt; _Default
    &lt;span style="color: rgb(0,0,255)"&gt;Inherits&lt;/span&gt; System.Web.UI.Page

    &lt;span style="color: rgb(0,0,255)"&gt;Protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; Wizard1_ActiveStepChanged(_&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Object&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; e &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.EventArgs) _&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Handles&lt;/span&gt; Wizard1.ActiveStepChanged&lt;br&gt;
        &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; ScriptManager1.IsInAsyncPostBack &lt;span style="color: rgb(0,0,255)"&gt;And&lt;/span&gt; _&lt;br&gt;           &lt;span style="color: rgb(0,0,255)"&gt;Not&lt;/span&gt; ScriptManager1.IsNavigating &lt;span style="color: rgb(0,0,255)"&gt;Then&lt;br&gt;
&lt;/span&gt;            ScriptManager1.AddHistoryPoint(&lt;span style="color: rgb(163,21,21)"&gt;"index"&lt;/span&gt;, _
                Wizard1.ActiveStepIndex, _
                &lt;span style="color: rgb(163,21,21)"&gt;"Wizard step "&lt;/span&gt; &amp;amp; Wizard1.ActiveStepIndex)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub

&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;Protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; ScriptManager1_Navigate(_&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Object&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; e &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; HistoryEventArgs) _&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Handles&lt;/span&gt; ScriptManager1.Navigate&lt;br&gt;
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; indexString &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt; = e.State(&lt;span style="color: rgb(163,21,21)"&gt;"index"&lt;/span&gt;)
        &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;.IsNullOrEmpty(indexString) &lt;span style="color: rgb(0,0,255)"&gt;Then
&lt;/span&gt;            Wizard1.ActiveStepIndex = 0
        &lt;span style="color: rgb(0,0,255)"&gt;Else
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; index &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Integer&lt;/span&gt; = Convert.ToInt32(indexString)
            Wizard1.ActiveStepIndex = index
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;        Page.Title = &lt;span style="color: rgb(163,21,21)"&gt;"Wizard step "&lt;/span&gt; &amp;amp; indexString
    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub
End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Class
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;a title="http://www.asp.net/downloads/3.5-extensions/" href="http://www.asp.net/downloads/3.5-extensions/"&gt;http://www.asp.net/downloads/3.5-extensions/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5549146" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bleroy/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/Microsoft+AJAX+Library/default.aspx">Microsoft AJAX Library</category><category domain="http://weblogs.asp.net/bleroy/archive/tags/VB/default.aspx">VB</category></item></channel></rss>