<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Brad Abrams  : Mix08</title><link>http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx</link><description>Tags: Mix08</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Loving the South African Developer Community</title><link>http://blogs.msdn.com/brada/archive/2008/07/01/loving-the-south-african-developer-community.aspx</link><pubDate>Tue, 01 Jul 2008 20:12:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8677861</guid><dc:creator>BradA</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/brada/comments/8677861.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8677861</wfw:commentRss><description>&lt;p&gt;I just got back from South Africa and I am happy to report that the .NET Developer community is very strong there.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;User's Group Meetings in in Johannesburg and Cape Town&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;User group meeting in Johannesburg&amp;#160; - thanks for setting this up &lt;a href="http://craign.net/2008/05/30/silverlight-2-with-brad-abrams/"&gt;Craig Nicholson&lt;/a&gt;..&amp;#160; I had a great time showing off Silverlight 2.&amp;#160; We had lot of fun talking about Silverlight wit these &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/Silverlight2-RIA.pptx"&gt;slides&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/brada/archive/2008/06/26/data-focused-silverlight-demo.aspx"&gt;demo&lt;/a&gt; that I did.&amp;#160; I also showed &lt;a href="http://memorabilia.hardrock.com/"&gt;HardRock DeepZoom&lt;/a&gt;, the video wall and &lt;a href="http://www.hsn.tv/"&gt;HSN.TV&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;User group meeting in Cape Town - Thanks to &lt;a href="http://hilton.giesenow.com/archive/2008/05/14/s-a-developer-net-event-june-2008-mvc-with-brad-abrams.aspx"&gt;Hilton Giesenow&lt;/a&gt; for setting this up.&amp;#160; This time I did a drill down into the ASP.NET MVC framework.&amp;#160; The response was excellent!&amp;#160;&amp;#160; Thanks folks for your questions and interest!&amp;#160; Here is the &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/MVC-Presentation.pptx"&gt;slides&lt;/a&gt; and &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/MVCNorthwindDemo.zip"&gt;demo&lt;/a&gt;..&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Mix Essentials in Johannesburg and Cape Town&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We had over 664 developers\designers attend the events in both cities&amp;#8230; A little over 3/5&lt;sup&gt;th&lt;/sup&gt; of them were developers and the vast majority of them were active ASP.NET developers.&amp;#160; Just about everyone was already on VS2008.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image001_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="125" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image001_thumb.jpg" width="144" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="126" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image002_thumb.jpg" width="146" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Keynote:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;We kicked off the day with keynote highlighting Microsoft&amp;#8217;s investment in UX.&amp;#160; I got drafted to do a breif bit on to show off some of the great work we are doing in &lt;b&gt;WPF for SP1&lt;/b&gt;. So I showed the very cool WPF Bitmaps effects demo ScottGu showed at Mix '08 in Vegas&amp;#8230; Judging from the comments afterward, I think it got a few people thinking about what is possible with a desktop applications.&amp;#160; People were impressed that the CPU was not being chewed up by this.. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image003_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="141" alt="clip_image003" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image003_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For the rest of the day we split up &amp;#8211; the designers when to a different room and I kept all of the developers.&amp;#160; I did three sessions covering the full web development space.&amp;#160;&amp;#160;&amp;#160; The retention rate was really good&amp;#8230; just about everyone stuck around for the end.&amp;#160; &lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Silverlight 2:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Next up I did an hour fifteen minute demo on Silverlight 2 development.&amp;#160;&amp;#160; I focused on end-to-end development, not just the UI glitz side of Silverlight and the audience responded very where.&amp;#160; Rather than going through a bunch of slides I created an application from scratch that does read\write data access via WCF and LINQ as well as local storage via Isolated storage&amp;#160; Here is part of the flow I used:&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/brada/archive/2008/06/26/data-focused-silverlight-demo.aspx"&gt;http://blogs.msdn.com/brada/archive/2008/06/26/data-focused-silverlight-demo.aspx&lt;/a&gt;&amp;#160; and &lt;a href="http://blogs.msdn.com/brada/archive/2008/06/23/using-asp-net-authentication-in-a-web-service-with-silverlight.aspx"&gt;http://blogs.msdn.com/brada/archive/2008/06/23/using-asp-net-authentication-in-a-web-service-with-silverlight.aspx&lt;/a&gt;.&amp;#160; Thanks &lt;a href="http://blogs.msdn.com/scmorris/"&gt;Scott Morrison&lt;/a&gt; for your help with this!&amp;#160;&amp;#160; Here are the &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/Silverlight2-RIA.pptx"&gt;slides&lt;/a&gt; I used to kick it off.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Ajax:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;I had a great time doing this ajax demo&amp;#8230; It was basically a reprise of &lt;a href="http://blogs.msdn.com/brada/archive/2008/03/06/mix08-session-overview-building-great-ajax-applications-from-scratch-using-asp-net-3-5-and-visual-studio-2008.aspx"&gt;my Mix 08 talk&lt;/a&gt; which is an all demo talk..&amp;#160; I could tell people really loved it!&amp;#160; Because I had just come back from Safari, &lt;a href="http://blogs.msdn.com/brada/archive/2008/06/30/updated-talk-building-great-ajax-applications-from-scratch-using-asp-net-3-5-and-visual-studio-2008.aspx"&gt;I re-themed it with my pictures&lt;/a&gt;.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image005_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="clip_image005" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image005_thumb.gif" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;u&gt;MVC:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;I split the last talk on the &amp;#8220;future of ASP.NET&amp;#8221; into two parts&amp;#8230; Part 1 was on MVC.&amp;#160;&amp;#160; The &amp;#8220;no viewstate&amp;#8221; and the &amp;#8220;IDs not mangled&amp;#8221; were winners!&amp;#160;&amp;#160;&amp;#160; Folks generally seemed to get that they did not have to move to ASP.NET MVC.&amp;#160; The two consistent big asks where for better\more ajax support and some sort of reusable component support.&amp;#160; I think we are well on our way to address both of those.&amp;#160; Here are the&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/MVC-Presentation.pptx"&gt;slides&lt;/a&gt; and &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/MVCNorthwindDemo.zip"&gt;demo&lt;/a&gt; I used.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Dynamic Data:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;This talk was a real crowd pleaser.&amp;#160; I started off by showing how to change an existing site into being Dynamic Data aware and this really drove home the point about the value Dynamic Data adds.&amp;#160; &lt;a href="http://blogs.msdn.com/brada/archive/2008/06/20/asp-net-dynamicdata-an-introductory-demo.aspx"&gt;http://blogs.msdn.com/brada/archive/2008/06/20/asp-net-dynamicdata-an-introductory-demo.aspx&lt;/a&gt; .&amp;#160; By this point &amp;#189; the room was already sold&amp;#8230; but there was much more.&amp;#160; I then used the wizard to show off all the customization capabilities of&amp;#160; DD.&amp;#160; That pulled&amp;#160; the rest of them in.&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/brada/archive/2008/06/27/asp-net-dynamic-data-customizing-the-ui.aspx"&gt;http://blogs.msdn.com/brada/archive/2008/06/27/asp-net-dynamic-data-customizing-the-ui.aspx&lt;/a&gt; .&amp;#160; The questions here were all about support for different data sources. NHibernate, plain old objects, etc.&amp;#160;&amp;#160;&amp;#160; I think we have a great story here and I wish I would have had time to demo it.&amp;#160;&amp;#160; Here are the &lt;a href="http://brad_abrams.members.winisp.net/Projects/SouthAfrica08/DynamicDataReMixSA.pptx"&gt;slides&lt;/a&gt; I used&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Closing&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;I had a little fun to close out the event.&amp;#160; Through the day I had been throwing out giveaways (t-shirts\balls\hats) whenever someone asked a question or pointed out a bug I had made (there were a few!).&amp;#160;&amp;#160; But I was left with a big Microsoft keyboard that I didn&amp;#8217;t want to through.&amp;#160; So I ask for a volunteer to come up and code something on stage like I had done all day!&amp;#160; I chose creating a LINQ model over top of Northwind as I did that like 5 different times during the event so I thought it was fair.&amp;#160;&amp;#160;&amp;#160; The victims.. ah, I mean volunteers at the Cape Town and Johannesburg events did well!&amp;#160; They started off kind of shaky and made me nervous, but they got in and nailed it!&amp;#160; It was a good fun time for all as the audience &amp;#8220;helped&amp;#8221; out a bit by yelling suggestions.&amp;#160; One guy even said &amp;#8220;you owe me &amp;#189; that keyboard&amp;#8221; when he finally go it ;-).&amp;#160; Oh, and some folks asked me about the zooming tool I used to zoom in on the screen.&amp;#160; It is called &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx"&gt;ZoomIt&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image006_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="310" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/clip_image006_thumb.jpg" width="246" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here are a few blog posts I have already seen from the event..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://liamb.com/2008/06/23/brad-abrams-visits-south-africa/"&gt;http://liamb.com/2008/06/23/brad-abrams-visits-south-africa/&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://metallemon.blogspot.com/2008/06/mix-essentials-2008.html"&gt;http://metallemon.blogspot.com/2008/06/mix-essentials-2008.html&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.fremus.co.za/blog/2008/06/first-experiences-with-visual-studio-2008/"&gt;http://www.fremus.co.za/blog/2008/06/first-experiences-with-visual-studio-2008/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I'd love to hear your feedback\thoughts on this... and if you blogged on the event please let me know and I will add your link here.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Oh, and I did spent a few days on Safari at Mala Mala adjacent to Krueger national park.&amp;#160;&amp;#160; I was amazed at the big game viewing... I highly recommend it.&amp;#160; Here are &lt;a href="http://flickr.com/photos/25954536@N04/"&gt;some photos&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="201" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="107" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/LovingtheSouthAfricanDeveloperCommunity_8F7A/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8677861" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Enhanced Mix08 Videos Posted</title><link>http://blogs.msdn.com/brada/archive/2008/05/16/enhanced-mix08-videos-posted.aspx</link><pubDate>Fri, 16 May 2008 19:25:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8513705</guid><dc:creator>BradA</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/brada/comments/8513705.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8513705</wfw:commentRss><description>&lt;p&gt;We recently finished the post product work required to get enhanced videos posted.&amp;#160; The videos not only include slides\demos, but also include a separate video stream of the speaker&amp;#160; so you get a deeper experience.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2008/03/06/mix08-session-overview-building-great-ajax-applications-from-scratch-using-asp-net-3-5-and-visual-studio-2008.aspx"&gt;Mix08 Session Overview: Building Great AJAX Applications from Scratch Using ASP.NET 3.5 and Visual Studio 2008&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://sessions.visitmix.com/?selectedSearch=T34"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="215" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/EnhancedMix08VideosPosted_847E/image_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;[&lt;a href="http://sessions.visitmix.com/?selectedSearch=T34"&gt;Watch this video&lt;/a&gt;]&lt;/p&gt;  &lt;p&gt;Unfortunately, this videos are not available for download, so you have to watch them on line..&lt;/p&gt;  &lt;p&gt;Enjoy this and the rest of the sessions at &lt;a title="http://sessions.visitmix.com/" href="http://sessions.visitmix.com/"&gt;http://sessions.visitmix.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8513705" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>A Start at Test Driven Development with Silverlight 2</title><link>http://blogs.msdn.com/brada/archive/2008/03/18/test-driven-development-with-silverlight-2.aspx</link><pubDate>Tue, 18 Mar 2008 20:46:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8281018</guid><dc:creator>BradA</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/brada/comments/8281018.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8281018</wfw:commentRss><description>&lt;p&gt;As you likely heard, we have released the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EA93DD89-3AF2-4ACB-9CF4-BFE01B3F02D4&amp;amp;displaylang=en"&gt;source code for all of the Silverlight controls&lt;/a&gt; as well as almost 2,000 of our own unit tests.&amp;#160; Included with in this is a jewel... A unit testing framework for Silverlight.&amp;#160; It is very powerful to have this feature so early in the develop of a new platform such as this. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/sburke/"&gt;Shawn Burke&lt;/a&gt; has a nice post walking you through the &lt;a href="http://blogs.msdn.com/sburke/archive/2008/03/05/silverlight-2-beta-1-controls-available-including-source-and-unit-tests.aspx"&gt;source code and test suite&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sburke/WindowsLiveWriter/Silverlight2Beta1ControlsAvailable_A5F1/image_14.png"&gt;&lt;img height="484" alt="Controls Project" src="http://blogs.msdn.com/blogfiles/sburke/WindowsLiveWriter/Silverlight2Beta1ControlsAvailable_A5F1/image_thumb_6.png" width="256" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sburke/WindowsLiveWriter/Silverlight2Beta1ControlsAvailable_A5F1/image_12.png"&gt;&lt;img height="484" alt="Test Projects, Controls.Data, Controls.Extended" src="http://blogs.msdn.com/blogfiles/sburke/WindowsLiveWriter/Silverlight2Beta1ControlsAvailable_A5F1/image_thumb_5.png" width="256" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jeff.wilcox.name/"&gt;Jeff Wilcox&lt;/a&gt; has a post detailing the &lt;a href="http://www.jeff.wilcox.name/2008/03/07/silverlight-unit-testing/"&gt;Unit Testing framework he built for Silverlight 2&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;img height="294" src="http://media.jeff.wilcox.name/blog/mix08/SilverlightTesting.png" width="433" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I'd love to hear what you think... Have you looked around in the source and test code base yet?&amp;#160; Have you tried out the unit testing framework?&amp;#160; any thoughts\feedback?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;thanks and enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8281018" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Silverlight 2 Developer Poster</title><link>http://blogs.msdn.com/brada/archive/2008/03/16/silverlight-2-developer-poster.aspx</link><pubDate>Sun, 16 Mar 2008 20:47:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8182660</guid><dc:creator>BradA</dc:creator><slash:comments>35</slash:comments><comments>http://blogs.msdn.com/brada/comments/8182660.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8182660</wfw:commentRss><description>&lt;p&gt;At Mix08, the Silverlight 2 Poster was a hot item given out in many of the session.&amp;#160;&amp;#160; If you didn't get yours or if you couldn't make it, you can feel free to download and print your own!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix08SL2Poster/Silverlight2PosterMIX08.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="221" alt="Silverlight MIX08 (Controls 5_1)" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight2DeveloperPoster_9874/Silverlight%20MIX08%20(Controls%205_1)_3.png" width="353" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;[&lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix08SL2Poster/Silverlight2PosterMIX08.jpg"&gt;JPG version&lt;/a&gt; 5.8MB] [&lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix08SL2Poster/Silverlight2PosterMIX08.png"&gt;PNG version&lt;/a&gt; 6.5MB]&amp;#160; [&lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix08SL2Poster/Silverlight2PosterMIX08.tif"&gt;TIF Version&lt;/a&gt; 19.9 MB]&lt;/p&gt;  &lt;p&gt;Also, note that &lt;a href="http://blogs.msdn.com/jstegman/archive/2008/03/11/deep-zoom-version-of-silverlight-2-developer-reference-poster.aspx"&gt;Joe did a very cool DeepZoom&lt;/a&gt; version.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8182660" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Single source code base for Silverlight and WPF solutions</title><link>http://blogs.msdn.com/brada/archive/2008/03/11/single-source-code-base-for-silverlight-and-wpf-solutions.aspx</link><pubDate>Tue, 11 Mar 2008 23:28:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8145264</guid><dc:creator>BradA</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/brada/comments/8145264.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8145264</wfw:commentRss><description>&lt;p&gt;At &lt;a href="http://visitmix.com/"&gt;Mix08&lt;/a&gt;, several people asked me about the possibility of creating a single source base for both WPF and Silverlight.&amp;#160; The scenario folks had in mind was to provide a reach solution with Silverlight that hits *ALL* possible users while also offering a really rich solutions for some users on full WPF (.NET Framework 3.0 or 3.5).&amp;#160; &lt;/p&gt;  &lt;p&gt;This is a clear benefit of the Microsoft Ux platform.. We have worked hard to get a smooth continuum between WPF and Silverlight... Basically if it works in Silverlight you should be pretty sure it will work on WPF.&amp;#160; &lt;/p&gt;  &lt;p&gt;I was chatting &lt;a href="http://blogs.msdn.com/delay/"&gt;David Anson&lt;/a&gt; (one of the developers of the Silverlight 2 controls) and he mentioned that the shipping versions of &lt;a href="http://silverlight.net/Samples/2b1/SilverlightControls/run/default.html"&gt;ListBox and ScrollViewer&lt;/a&gt; were written this way!&amp;#160;&amp;#160; That is right, to test out the continuum message, David built ListBox and ScrollViewer for Silverlight in such a way that the run (and past unit tests) on both WPF and Silverlight.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Now, in and of itself, this is not all that interesting, because WPF already has a ListBox and ScrollViewer, but it does serve as a nice test case to demonstrate how you can build controls and applications that work on both Silverlight and WPF.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/SinglesourcecodebaseforSilverlightandWPF_13C0F/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="243" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/SinglesourcecodebaseforSilverlightandWPF_13C0F/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Because we shipped the source and unit tests for the Silverlight controls, you &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ea93dd89-3af2-4acb-9cf4-bfe01b3f02d4&amp;amp;displaylang=en"&gt;can check this out yourself&lt;/a&gt;!&amp;#160; &lt;/p&gt;  &lt;p&gt;In addition, David did a &lt;a href="http://blogs.msdn.com/delay/archive/2008/03/10/lb-sv-wpf-silverlight-2-s-listbox-and-scrollviewer-controls-running-on-wpf.aspx"&gt;nice blog detailing the work he did and why&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/delay/attachment/8139749.ashx"&gt;posted the test project&lt;/a&gt; you can try out as well.&amp;#160; &lt;/p&gt;  &lt;p&gt;On a related note, be sure to check out &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-8-creating-a-digg-desktop-application-using-wpf.aspx"&gt;the final step&lt;/a&gt; of &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx"&gt;ScottGu's Silverlight 2 tutorial..&lt;/a&gt;.&amp;#160; Notice how easy it is for him to make a WPF application out of it. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://silverlight1blogpost.s3.amazonaws.com/step126.png" /&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8145264" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Cool Silverlight Momentum Video Posted</title><link>http://blogs.msdn.com/brada/archive/2008/03/10/cool-silverlight-momentum-video-posted.aspx</link><pubDate>Mon, 10 Mar 2008 21:47:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8136190</guid><dc:creator>BradA</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/brada/comments/8136190.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8136190</wfw:commentRss><description>&lt;p&gt;If you watched the &lt;a href="http://visitmix.com/blogs/Joshua/Day-1-Keynote/"&gt;Mix keynote&lt;/a&gt;, I am sure you saw the very cool Silverlight Momentum video that shows off a lot of the cool apps we have already seen in Silverlight.&amp;#160; &lt;/p&gt;  &lt;p&gt;In case you missed it, here it is:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight_2008_FINAL_edit_640x360_2M_CBR_noaud.wmv"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="139" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/CoolSilverlightMomentumVideoPosted_A5C9/image_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;[&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight Mobile.wmv"&gt;Mobile&lt;/a&gt;] [&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight_2008_FINAL_1M_progressive FIXED.wmv"&gt;Progressive download&lt;/a&gt;] [&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight_2008_FINAL_1M_streaming FIXED.wmv"&gt;streaming&lt;/a&gt;]     &lt;br /&gt;[&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight_2008_FINAL_4M CBR.wmv"&gt;4M CBR&lt;/a&gt;] [&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight_2008_FINAL_720p 12M CBR.wmv"&gt;720p&lt;/a&gt;] [&lt;a href="http://download.microsoft.com/download/2/c/4/2c433161-f56c-4bab-bbc5-b8c6f240afcc/Silverlight_2008_FINAL_edit_640x360_2M_CBR_noaud.wmv"&gt;640x360&lt;/a&gt;] &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8136190" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Mix 08 Sessions Published</title><link>http://blogs.msdn.com/brada/archive/2008/03/07/mix-08-sessions-published.aspx</link><pubDate>Fri, 07 Mar 2008 21:40:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8104438</guid><dc:creator>BradA</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/brada/comments/8104438.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8104438</wfw:commentRss><description>&lt;p&gt;The great folks here running Mix have done a excellent job getting the videos for the Mix session up already!&amp;#160; &lt;/p&gt;  &lt;p&gt;Check them out at :&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://sessions.visitmix.com/"&gt;http://sessions.visitmix.com/&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionsPublished_9628/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="239" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionsPublished_9628/image_thumb.png" width="315" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Check out my session on &lt;a href="http://sessions.visitmix.com/?selectedSearch=T34"&gt;Building an Ajax Application from scratch&lt;/a&gt;..&amp;#160;&amp;#160; It &lt;a href="http://blogs.msdn.com/brada/archive/2008/03/06/mix08-session-overview-building-great-ajax-applications-from-scratch-using-asp-net-3-5-and-visual-studio-2008.aspx"&gt;was an all demo, no slides sort of talk&lt;/a&gt;, so it really stands out in the listing ;-)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8104438" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Silverlight and WPF Control Developer Huddle at Mix08</title><link>http://blogs.msdn.com/brada/archive/2008/03/06/silverlight-and-wpf-control-developer-huddle-at-mix08.aspx</link><pubDate>Fri, 07 Mar 2008 01:57:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8080941</guid><dc:creator>BradA</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/brada/comments/8080941.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8080941</wfw:commentRss><description>&lt;p&gt;I just&amp;#160; ran into Ted Glaza from Ajax Control toolkit and Silverlight Controls fame and he is getting some of the control developers together (3rd parties, Microsoft as well as in house) to talk about building controls for WPF and Silverlight.&amp;#160; &lt;/p&gt;  &lt;p&gt;We will have some folks there are are building the current set of controls that ship in the box for Silverlight and WPF from and I hope some folks from Telerik, ComponentOne, and Infragistics.&amp;#160; &lt;/p&gt;  &lt;p&gt;Ted tells me we will meet up in a few tables in the center of the dining room here at Mix tomorrow (Friday) at during the lunch break. &lt;/p&gt;  &lt;p&gt;Anyone is welcome be there if you can!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8080941" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/brada/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Mix08 Session Overview: Building Great AJAX Applications from Scratch Using ASP.NET 3.5 and Visual Studio 2008</title><link>http://blogs.msdn.com/brada/archive/2008/03/06/mix08-session-overview-building-great-ajax-applications-from-scratch-using-asp-net-3-5-and-visual-studio-2008.aspx</link><pubDate>Thu, 06 Mar 2008 20:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8042993</guid><dc:creator>BradA</dc:creator><slash:comments>32</slash:comments><comments>http://blogs.msdn.com/brada/comments/8042993.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8042993</wfw:commentRss><description>&lt;p&gt;I am really looking forward to my Mix08 session this year... It is going to be fun to building an Ajax application from scratch on stage with VS2008 and ASP.NET 3.5.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Update (3/15)&lt;/em&gt;: I made a few tweaks based on comments to this post.&amp;nbsp; thanks!&lt;/p&gt; &lt;p&gt;&lt;em&gt;Update (3/07):&amp;nbsp; &lt;/em&gt;The session &lt;a href="http://sessions.visitmix.com/?selectedSearch=T34   "&gt;video is now posted&lt;/a&gt;.&amp;nbsp; There is even a &lt;a href="http://visitmix.com/blogs/2008Sessions/T34/"&gt;place to discuss the session.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Here is a play-by-play if you want to follow along and help keep me in line...&amp;nbsp; This Mix08 folks should have the video up tomorrow... I will link to it when it is up.&lt;/p&gt; &lt;p&gt;Everything I will show can be done with the free-and-always free &lt;a href="http://www.microsoft.com/express/vwd/Default.aspx" mce_href="http://www.microsoft.com/express/vwd/Default.aspx"&gt;Visual Web Developer&lt;/a&gt; Express edition of VS... Go grab it and play along!&amp;nbsp; &lt;/p&gt; &lt;p&gt;Download the &lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix08ASP.NET3.5/photo2.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/Mix08ASP.NET3.5/photo2.zip"&gt;completed sample&lt;/a&gt; or just the &lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix08ASP.NET3.5/AjaxAppDemoFiles.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/Mix08ASP.NET3.5/AjaxAppDemoFiles.zip"&gt;starter files&lt;/a&gt; to play along at home.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;h4&gt;Part I:&amp;nbsp; CSS and HTML Designer&lt;/h4&gt; &lt;p&gt;I started a brand new project and selected .NET Framework 2.0 as the target runtime.&amp;nbsp; This allows me use VS2008, but target servers that have not been upgraded to .NET Framework 3.5 yet.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I then showed off the new Split view that is an excellent way to find out what markup goes with what UI element.&amp;nbsp; Notice as I highlight the text in the markup, it is tracked and highlighted in the designer.&amp;nbsp; I can also do two-way editing in the designer or the code source view.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_1.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_1.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next, I used VS 2008's great new CSS support.&amp;nbsp; I used the Manage Styles panel to create a new CSS Selector...&amp;nbsp; Notice I use ".photolist li" this rule will apply to any li inside an element with the class photolist.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Also, notice we can select where to define the css rules in.&amp;nbsp; I have selected in a new style sheet. VS will create the new style sheet and (optionally) reference it from the current page.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="230" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_3.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_3.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next, I go into the markup and set the class for the ul to photolist.&amp;nbsp; Notice the great automatic completion VS gives me.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="84" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_4.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_4.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now, i can open up the CSS file and see how clean it is?&amp;nbsp; Also, notice I can do code-focused editing of the CSS rather than use the designers.&amp;nbsp; Again, I get great help from VS.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="168" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_5.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_5.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next, in design view, I click on an image... notice the breadcrumb at the bottom of VS shows you where you are in the visual tree.&amp;nbsp; Hit escape to navigate up the tree until the list item (li) is selected.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="38" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_7.png" width="378" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_7.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;We want this to layout like a grid, so in the CSS Properties window, under Position, set Display to "inline" and float to "left"&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_6.png" width="188" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_6.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next we use the grab-handles in the designer to give us a little more spacing... Again, notice how all these edits are cleanly going into the attached CSS style sheet rather than gunking up our code.&lt;/p&gt; &lt;p&gt;Finally, let's make this look really nice by throwing it a MasterPage will will give a common look and feel across our site.&lt;/p&gt; &lt;p&gt;And we are starting go have something that looks sort of nice!&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_18.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="191" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_8.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_8.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;To close this part of the demo off, let's go ahead and upgrade the site to use .NET Framework 3.5... &lt;br&gt;Before we do that, notice under Add References... there are a bunch of references grayed out.&amp;nbsp; This is to keep developers from accidentally using some new stuff that is only in .NET Framework 3.5.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_22.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_10.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_10.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Under Project, Properties, Build Options you can change the target framework to be .NET Framework 3.5&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_24.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="142" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_11.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_11.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now, you will notice that all the references are available...&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_26.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_12.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_12.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h4&gt;Part II:&amp;nbsp; Data access with Linq&lt;/h4&gt; &lt;p&gt;OK, that was great, but in a real world site you don't deal with static images... you need to pull data out of a database.&amp;nbsp;&amp;nbsp; So let's change the site around a bit to pull data from a database. &lt;/p&gt; &lt;p&gt;First, i will drag in photos.mdb into App_Data, this is a SqlServer database that I created for this demo... I will use the free Sql Express to allow me to use it at development time.&lt;/p&gt; &lt;p&gt;As you can see it is a simple database.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_20.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_20.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_9.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_9.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now, as a .NET developer, I'd really like to operate against this database as a set of .NET types rather than having to remember and debug some T-Sql code in my .NET code.&amp;nbsp; Luckily Linq solves this for me!&lt;/p&gt; &lt;p&gt;To add a Linq data model for this database... Add New Item, then select the Linq To Sql classes (note: Entity Framework works in an identical way)&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_28.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="161" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_13.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_13.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Then drag the Photos and Tags table over the new design surface.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_30.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_30.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_14.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_14.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This is the view of your .NET types that represent your database.&amp;nbsp; Notice VS picked up on the relationships between the tables and even gave pretty names to the .NET classes (Photo rather than Photos for example).&amp;nbsp;&amp;nbsp; You can of course edit these names in this designer view as well.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Notice, while this will do direct CRUD operations against the database, it is very possible to encapsulate all access through stored procs if need be.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Now, let's go back to the UI and give us some place to put this data.&amp;nbsp; I will show off the new ListView control in ASP.NET.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The way ListView works, is that you give it a layout template that defines exactly how you work the markup to look.&amp;nbsp; In our case, we will just cut and pate that ul into the layout template and define a place holder of the li's &lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ListView&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="photoList"&lt;/span&gt; &lt;span class="attr"&gt;ItemPlaceholderID&lt;/span&gt;&lt;span class="kwrd"&gt;="ph"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LayoutTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ul&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="photolist"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:PlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="ph"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:PlaceHolder&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ul&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LayoutTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ListView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Then, we can set the ItemTemplate to be one of the LIs... later we will need to come back and databind these values rather than using a hard coded example.&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ListView&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="photoList"&lt;/span&gt; &lt;span class="attr"&gt;ItemPlaceholderID&lt;/span&gt;&lt;span class="kwrd"&gt;="ph"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LayoutTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ul&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="photolist"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:PlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="ph"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:PlaceHolder&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ul&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LayoutTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="Images/1.jpg"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                Eat more Cake 
           &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ListView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Flip to design view, it looks pretty nice!&amp;nbsp; Now we just need some real data.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_34.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_34.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_15.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_15.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;To get the real data, let's go back to that Linq data model we created and write some code against it.&amp;nbsp; &lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; i = 4;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        PhotosDataContext db = &lt;span class="kwrd"&gt;new&lt;/span&gt; PhotosDataContext();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        var q = from photo &lt;span class="kwrd"&gt;in&lt;/span&gt; db.Photos&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                &lt;span class="kwrd"&gt;where&lt;/span&gt; photo.Rating == i&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                orderby photo.Tags.First().TagName ascending&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                select photo;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        photoList.DataSource = q;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        photoList.DataBind();&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;In line 2, we create the data context... this is the logic connection string for our Linq data model.&lt;/p&gt;
&lt;p&gt;In line 3, we are using C#'s new var keyword which allows us to fudge on the type of the express...the compiler will figure it out...&lt;/p&gt;
&lt;p&gt;In line 4, we are doing a where clause, notice that I am capturing a local variable in that, clearly this example is trivial, but it is a powerful feature.&lt;/p&gt;
&lt;p&gt;in line 5 notice i am ordering by the first tag name, notice how nice this reads?&amp;nbsp; It would be much harder to do this&amp;nbsp; in TSQL!&lt;/p&gt;
&lt;p&gt;in line 7 and 8 and I doing the normal databinding.&lt;/p&gt;
&lt;p&gt;Now we need to go into the UI and set it up to pull values from this data source.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="Images/&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;#Eval(&lt;span class="str"&gt;"ImagePath"&lt;/span&gt;) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;#Eval(&lt;span class="str"&gt;"Title"&lt;/span&gt;) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;
           &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;nbsp; The results!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_36.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_36.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="191" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_16.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_16.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now, that is nice, but there are a ton of results here..&amp;nbsp; we really need a nice way to page through them.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I use the new DataPager control in ASP.NET 3.5..&amp;nbsp; Notice it can have filed that are simple Next\Prev or numeric or you can even build your own!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_38.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_38.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="95" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_17.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_17.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Here is the complete code:&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:DataPager&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="dp"&lt;/span&gt;
                    &lt;span class="attr"&gt;PagedControlID&lt;/span&gt;&lt;span class="kwrd"&gt;="photoList"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Fields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:NumericPagerField&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Fields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:DataPager&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Now, we need to ensure that the ListView will show the correct items when the data pager changes.&amp;nbsp; We do this by adding a PreRender() method to the page.&amp;nbsp; A simplified view of the page lifecycle is Page_Load(), then the control events are raised, then Page_PreRender() is called.&amp;nbsp;&amp;nbsp; In our case the events from the pager need to be raised to change the page before we bind the list.
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;protected void &lt;/span&gt;Page_PreRender()
{
    photoslist.DataBind();
}&lt;/pre&gt;&lt;pre class="code"&gt;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;And notice it works great!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_40.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_40.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_18.png" width="170" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_18.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;Part III:&amp;nbsp; Server Side Ajax&lt;/h4&gt;
&lt;p&gt;Now it is time to add a little ajax fun to the site.&amp;nbsp;&amp;nbsp; Notice as I page through the items I am getting a little blink?&amp;nbsp; That is because the page is doing a full post-back to the server when only the images are changing.&amp;nbsp; It would be great if I could update only the part of the page that is changing!&amp;nbsp; &lt;/p&gt;
&lt;p&gt;And you can with UpdatePanel. Simply wrap the UpdatePanel's content template around the area of the page that you want to update separately.&amp;nbsp; the runtime will turn any postbacks into XmlHttp calls, back the the server, get the right HTML and then bring in back and update only the part of the DOM effected.&amp;nbsp;&amp;nbsp; Simple. Powerful.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_44.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_44.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="93" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_20.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_20.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Oh, and don't forget to add ScriptManager to the top of the page.&amp;nbsp; This "turns on" the ajax functionality in ASP.NET...&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;=&lt;span class="attr"&gt;server&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;=&lt;span class="attr"&gt;sm&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Now the page refreshes much more smoothly.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For the demo, we are running against localhost, but in the real world there is network load, congestion on the Internet, etc that may effect your page's responsiveness.&amp;nbsp;&amp;nbsp; But you want to give user's an immediate response to their actions... to let them know that something is happening.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;You can use a Thread.Sleep (2000) in your page's load method to simulate this sort of load..&amp;nbsp; &lt;/p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Enter UpdateProgress...&amp;nbsp;&amp;nbsp; This little control listens for calls over XmlHttp and shows a progress template as they go out and takes it down when they come back in...&amp;nbsp; That plus a little animate gif gives users a great sense of "something happening".&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdateProgress&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="UpdateProgress2"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProgressTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="UpdateProgressBox"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Img2"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;="Loading"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="~/Images/ajax-loader.gif"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProgressTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdateProgress&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;nbsp; And now the site looks good!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_46.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_46.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="191" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_21.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_21.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;Part IV:&amp;nbsp; Client Side Ajax &lt;/h4&gt;
&lt;p&gt;Next we want to allow users to edit those titles, but in a smooth way that doesn't require form postback to the server.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;We start by changing the rendering of the title to an input control&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="titleTextBox"&lt;/span&gt;
       &lt;span class="attr"&gt;onchange&lt;/span&gt;&lt;span class="kwrd"&gt;="onTitleChange(this.value, &amp;lt;%#Eval("&lt;/span&gt;&lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;") %&amp;gt;);"&lt;/span&gt;
       &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%#Eval("&lt;/span&gt;&lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;") %&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
Now we need to go define the onTitleChange client side javascript method.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;We do this in the header content area our MasterPage has left us.&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;function&lt;/span&gt; onTitleChange (title, id) {
           
        }
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;Notice that VS 2008 has some great intellisense for JavaScript.&amp;nbsp;&amp;nbsp; We are actually running a JavaScript interpreter in the background, so we always know what type the objects are.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For example, here VS knows n is a Dom element.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_48.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_48.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_22.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_22.png"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;But we can easily change the type to a string...&amp;nbsp; and VS keeps up!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_50.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_50.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="163" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_23.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_23.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;We know debugging in JavaScript can be hard... I know I have used alert() based debugging too many times!&amp;nbsp; Well, VS2008 is here to help with full debugging support for client side javascript.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_52.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_52.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="168" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_24.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_24.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Lots of cool stuff to show you here.&amp;nbsp; Notice at the top right, full debugging controls, run, break, step over, step into, etc. &lt;br&gt;At the mid-left, notice the icon's for break point, and current executing line. &lt;br&gt;At the mid-right, notice the debugging views I get that show me exactly what the current value of all the locals and parameters are. &lt;br&gt;At the bottom right, notice my the results of my call to Sys.Debug.Trace() are beging displayed in the output window.&amp;nbsp; &lt;br&gt;And finally at the bottom right, notice I have full control to use the immediate window to evaluate results in the current context.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Ok, cool, but now we want to actually go change the datamodel on the server... How do I do that?&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Well, first define a WCF-Ajax service.&amp;nbsp; This well expose JSON calls that is very ajax friendly.&amp;nbsp;&amp;nbsp; Add, New Item, Ajax-enabled WCF service.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_54.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_54.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="161" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_25.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_25.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now, we need to implement a web services that will update our data model.&amp;nbsp; &lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; SetPhotoTitle(&lt;span class="kwrd"&gt;string&lt;/span&gt; title, &lt;span class="kwrd"&gt;int&lt;/span&gt; id)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        PhotosDataContext db = &lt;span class="kwrd"&gt;new&lt;/span&gt; PhotosDataContext();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        var q = (from photo &lt;span class="kwrd"&gt;in&lt;/span&gt; db.Photos&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                &lt;span class="kwrd"&gt;where&lt;/span&gt; photo.ID == id&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                select photo).First();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        q.Title = title;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        db.SubmitChanges();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; q.Title;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;br&gt;Then we just need to call it from client side javascript.&amp;nbsp; To do that, we need to add a reference in ScriptManager.&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="sm"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ServiceReference&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="~/PhotoService.svc"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
Then, we can directly access the SetPhotoTitle method from JavaScript.&amp;nbsp; Notice we even get auto-completion. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_56.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_56.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="91" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_26.png" width="316" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_26.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Because the is Ajax, we need to be asynchronous... which means we need to define a callback method to get the results.&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;        function onTitleChange (title, id) {
          Sys.Debug.trace("Title: " + title);
          PhotoService.SetPhotoTitle(title, id, onComplete);
        }
        function onComplete (results) {
           Sys.Debug.trace (results);
        }&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
OK... let's run this in FireFox and use FireBug to check out the network traffic.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;First thing to notice is that the Sys.Debug.Trace() calls are making their way to firefox's console window.&amp;nbsp; Very helpful in debugging.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_58.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_58.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_27.png" width="218" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_27.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Next, we will expand that node and notice the request is in JSON format&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_60.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_60.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_28.png" width="328" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_28.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;As is the response..&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_62.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_62.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="126" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_29.png" width="315" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_29.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;Part V:&amp;nbsp; Ajax Control Toolkit Fun!&lt;/h4&gt;
&lt;p&gt;Now we need some way to add new items to our database.&amp;nbsp; Let's add a new page for this purpose.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Right click on the master and select add content page.&amp;nbsp; Rename it to "AddPhoto.aspx"&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_64.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_64.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_30.png" width="128" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_30.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now, I will use a FormView in Insert mode to give us some pre-backed UI to start with.&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:FormView&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; 
                  &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="fv"&lt;/span&gt; 
                  &lt;span class="attr"&gt;DefaultMode&lt;/span&gt;&lt;span class="kwrd"&gt;="Insert"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:FormView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Then, to show databinding in the designer, let's flip to design view and edit databinding.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_66.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_66.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="78" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_31.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_31.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;We will use the new LinqDataSource control&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_68.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_68.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_32.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_32.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Notice it already knows about the PhotosDataContext we created earlier &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_70.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_70.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_33.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_33.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;We have really customization support&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_72.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_72.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_34.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_34.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The results look good...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_74.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_74.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="116" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_35.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_35.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The LinqDataSource that was created is far from a black box, you can not only re-run the wizard, but you can edit this in markup as well.&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:LinqDataSource&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="LinqDataSource1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; 
        &lt;span class="attr"&gt;ContextTypeName&lt;/span&gt;&lt;span class="kwrd"&gt;="PhotosDataContext"&lt;/span&gt; 
        &lt;span class="attr"&gt;Select&lt;/span&gt;&lt;span class="kwrd"&gt;="new (Title, Description, Rating, Tags)"&lt;/span&gt; &lt;span class="attr"&gt;TableName&lt;/span&gt;&lt;span class="kwrd"&gt;="Photos"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:LinqDataSource&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Now, let's go in and Ajax enable this form a little more!&lt;/p&gt;
&lt;p&gt;First, for the tags, we want to provide a suggest type of feature to give people a hint as to what tags are. This is easy with the Ajax Control Toolkit's AutoCompleteExtender.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Select Edit Templates, then InsertItem, then Add Extender.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_76.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_76.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_36.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_36.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Select the AutoCompleteExtender&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_80.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_80.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_38.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_38.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now, select Add AutoCompletePageMethod&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_82.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_82.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="127" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_39.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_39.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And here is the implantation... again, some fun Linq code.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] GetCompletionList(&lt;span class="kwrd"&gt;string&lt;/span&gt; prefixText, &lt;span class="kwrd"&gt;int&lt;/span&gt; count, &lt;span class="kwrd"&gt;string&lt;/span&gt; contextKey)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        PhotosDataContext db = &lt;span class="kwrd"&gt;new&lt;/span&gt; PhotosDataContext();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        var q = from t &lt;span class="kwrd"&gt;in&lt;/span&gt; db.Tags&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                &lt;span class="kwrd"&gt;where&lt;/span&gt; t.TagName.StartsWith(prefixText) &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                select t.TagName; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; q.Take(count).ToArray();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;Let's check out the markup and see what is generated.&amp;nbsp;&amp;nbsp; We will also set the MinimumPrefixLength to 1 to make the demo smoother. &lt;/p&gt;&lt;pre class="csharpcode"&gt;            Tags:
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:TextBox&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="TagsTextBox"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# Bind("Tags") %&amp;gt;'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cc1:AutoCompleteExtender&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="TagsTextBox_AutoCompleteExtender"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; 
                &lt;span class="attr"&gt;DelimiterCharacters&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; 
                &lt;span class="attr"&gt;Enabled&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; 
                &lt;span class="attr"&gt;ServiceMethod&lt;/span&gt;&lt;span class="kwrd"&gt;="GetCompletionList"&lt;/span&gt; 
                &lt;span class="attr"&gt;ServicePath&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; 
                &lt;span class="attr"&gt;MinimumPrefixLength&lt;/span&gt;=&lt;span class="attr"&gt;1&lt;/span&gt; 
                &lt;span class="attr"&gt;TargetControlID&lt;/span&gt;&lt;span class="kwrd"&gt;="TagsTextBox"&lt;/span&gt; 
                &lt;span class="attr"&gt;UseContextKey&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cc1:AutoCompleteExtender&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;When we run it.. it looks great...&amp;nbsp; &lt;/p&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_86.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_86.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_41.png" width="137" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_41.png"&gt;&lt;/a&gt; &lt;/div&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;Now, let's add a couple of other toolkit controls..&lt;/p&gt;
&lt;p&gt;Replace the rating textbox with a much cooler netflix style ratings control, put a watermark on the description textbox and confirm before submitting.&amp;nbsp; &lt;/p&gt;&lt;pre class="csharpcode"&gt;            Rating:
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cc1:Rating&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="Rating1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;BehaviorID&lt;/span&gt;&lt;span class="kwrd"&gt;="AutoCompleteEx"&lt;/span&gt; &lt;span class="attr"&gt;CurrentRating&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# Bind("Rating") %&amp;gt;'&lt;/span&gt;
                &lt;span class="attr"&gt;EmptyStarCssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="emptyRatingStar"&lt;/span&gt; &lt;span class="attr"&gt;FilledStarCssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="filledRatingStar"&lt;/span&gt; &lt;span class="attr"&gt;MaxRating&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;
                &lt;span class="attr"&gt;StarCssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="ratingStar"&lt;/span&gt; &lt;span class="attr"&gt;WaitingStarCssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="savedRatingStar"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cc1:Rating&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;            Description:
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:TextBox&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="DescriptionTextBox"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; 
                &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# Bind("Description") %&amp;gt;'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cc1:TextBoxWatermarkExtender&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="DescriptionTextBox_TextBoxWatermarkExtender"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;
                &lt;span class="attr"&gt;Enabled&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; &lt;span class="attr"&gt;TargetControlID&lt;/span&gt;&lt;span class="kwrd"&gt;="DescriptionTextBox"&lt;/span&gt; &lt;span class="attr"&gt;WatermarkCssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="watermarked"&lt;/span&gt;
                &lt;span class="attr"&gt;WatermarkText&lt;/span&gt;="&amp;amp;&lt;span class="attr"&gt;lt&lt;/span&gt;;&lt;span class="attr"&gt;type&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;"&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cc1:TextBoxWatermarkExtender&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;pre class="csharpcode"&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:LinkButton&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="InsertButton"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;CausesValidation&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; 
                &lt;span class="attr"&gt;CommandName&lt;/span&gt;&lt;span class="kwrd"&gt;="Insert"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Insert"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cc1:ConfirmButtonExtender&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="InsertButton_ConfirmButtonExtender"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;
                &lt;span class="attr"&gt;ConfirmText&lt;/span&gt;&lt;span class="kwrd"&gt;="Are you sure you want to add this item?"&lt;/span&gt; &lt;span class="attr"&gt;Enabled&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; &lt;span class="attr"&gt;TargetControlID&lt;/span&gt;&lt;span class="kwrd"&gt;="InsertButton"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cc1:ConfirmButtonExtender&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_88.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_88.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_42.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_42.png"&gt;&lt;/a&gt; &lt;/pre&gt;&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Ok, that is some really cool functionality, but what about page load time?&amp;nbsp; Let's go back to FireBug and take a look at the scripts that we are loading.&lt;/p&gt;
&lt;p&gt;I am seeing 13 different requests, 122KB and 10.35s... wow that seems like a lot.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_90.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_90.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_43.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_43.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can use the new ScriptCombining feature to combing the scripts into a single request that saves the round trip time and compresses better. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice this part of the demo will only work once we ship out the update to ASP.NET we are working on right now... So for now, it is just for your reference.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;But first we need to know exactly what scripts are being loaded.&amp;nbsp; To see this let's look at the ScriptReference debugging tool. &lt;/p&gt;
&lt;p&gt;Just drop it on your page &lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cc2:ScriptReferenceProfiler&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="ScriptReferenceProfiler1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;and you see exactly what is loaded. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_92.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_92.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_44.png" width="384" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_44.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;We also, have both the debug and retail scripts ready to download in case we want to share this across several pages. &lt;/p&gt;
&lt;p&gt;Then cut and past that into ScriptManager.&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="sm"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CompositeScript&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Scripts&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="MicrosoftAjax.js"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="MicrosoftAjaxWebForms.js"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.Common.Common.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.ExtenderBase.BaseScripts.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.TextboxWatermark.TextboxWatermark.js"&lt;/span&gt;
                    &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.Rating.RatingBehavior.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.Compat.Timer.Timer.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.Animation.Animations.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.Animation.AnimationBehavior.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.PopupExtender.PopupBehavior.js"&lt;/span&gt; &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.AutoComplete.AutoCompleteBehavior.js"&lt;/span&gt;
                    &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit.ConfirmButton.confirmButtonBehavior.js"&lt;/span&gt;
                    &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;="AjaxControlToolkit, Version=3.0.11119.25533, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Scripts&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CompositeScript&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
Now, let's go back to firebug...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_96.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_96.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_46.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix08SessionOvervie.5andVisualStudio2008_C9D3/image_thumb_46.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This time, we have two request 118KB and 4.39s... Much better!&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8042993" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Tips for Installing Silverlight 2 Beta</title><link>http://blogs.msdn.com/brada/archive/2008/03/05/tips-for-installing-silverlight-2-beta.aspx</link><pubDate>Thu, 06 Mar 2008 10:20:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8067726</guid><dc:creator>BradA</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/brada/comments/8067726.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8067726</wfw:commentRss><description>&lt;p&gt;Walking around Mix08 today I had a chance to help a few people with some install issues.&amp;#160; In some cases the installer was asking for VS 2008 media and in other cases it was refusing to install.&amp;#160; &lt;/p&gt;  &lt;p&gt;Luckily, Bradley Bartz from the Visual Web Developer team was around to help folks.&amp;#160; He drilled into the cause of the issues he saw and wrote up a very nice blog post listing the common issues and solutions. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/bradleyb/archive/2008/03/06/installation-tips-for-sivliverlight-tools-beta-1-for-visual-studio-2008.aspx"&gt;Installation Tips for Silverlight Tools Beta 1 for Visual Studio 2008&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8067726" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Silverlight 2 Controls</title><link>http://blogs.msdn.com/brada/archive/2008/03/05/silverlight-2-controls.aspx</link><pubDate>Thu, 06 Mar 2008 03:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8060309</guid><dc:creator>BradA</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/brada/comments/8060309.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8060309</wfw:commentRss><description>&lt;P&gt;As &lt;A href="http://weblogs.asp.net/scottgu" mce_href="http://weblogs.asp.net/scottgu"&gt;ScottGu&lt;/A&gt; announced in &lt;A href="http://visitmix.com/blogs/Joshua/Day-1-Keynote/" mce_href="http://visitmix.com/blogs/Joshua/Day-1-Keynote/"&gt;the Mix08 keynote&lt;/A&gt; today, we now have a full, rich set of controls built in to Silverlight 2.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight2Controls_E81D/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight2Controls_E81D/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=175 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight2Controls_E81D/image_thumb.png" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight2Controls_E81D/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/kathykam/" mce_href="http://blogs.msdn.com/kathykam/"&gt;Kathy Kam&lt;/A&gt; recently created a very cool control viewer to show off all the &lt;A class="" href="http://silverlight.net/samples/sl2/silverlightcontrols/run/default.html" mce_href="http://silverlight.net/samples/sl2/silverlightcontrols/run/default.html"&gt;great built in controls&lt;/A&gt;.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Oh, and don't forget about the really rich set of controls produced by our eco-system.&amp;nbsp; Just a couple of examples:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://labs.componentone.com/Sapphire/?demo=controls" mce_href="http://labs.componentone.com/Sapphire/?demo=controls"&gt;http://labs.componentone.com/Sapphire/?demo=&lt;STRONG&gt;controls&lt;/STRONG&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.vectorlight.net/silverlight_net_form_controls_demo.aspx" mce_href="http://www.vectorlight.net/silverlight_net_form_controls_demo.aspx"&gt;http://www.vectorlight.net/&lt;STRONG&gt;silverlight&lt;/STRONG&gt;_net_form_&lt;STRONG&gt;controls&lt;/STRONG&gt;_demo.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.infragistics.com/hot/silverlight.aspx" mce_href="http://www.infragistics.com/hot/silverlight.aspx"&gt;http://www.infragistics.com/hot/&lt;STRONG&gt;silverlight&lt;/STRONG&gt;.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Nov '08:&amp;nbsp; Updated the link to the RTM version of the samples page: &lt;A href="http://silverlight.net/samples/sl2/silverlightcontrols/run/default.html"&gt;http://silverlight.net/samples/sl2/silverlightcontrols/run/default.html&lt;/A&gt;&lt;BR&gt;Also, be sure to check out the Silverlight Control Toolkit: &lt;A href="http://www.codeplex.com/Silverlight/"&gt;http://www.codeplex.com/Silverlight/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8060309" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>asp:MediaPlayer and asp:Silverlight controls update</title><link>http://blogs.msdn.com/brada/archive/2008/03/05/asp-mediaplayer-and-asp-silverlight-controls-update.aspx</link><pubDate>Wed, 05 Mar 2008 22:44:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8053795</guid><dc:creator>BradA</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/brada/comments/8053795.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8053795</wfw:commentRss><description>&lt;p&gt;As I am sure you have heard, we just published the &lt;a href="http://silverlight.net/GetStarted/#betajump"&gt;Silverlight 2 Beta 1&lt;/a&gt;.&amp;#160; In addition to &lt;a href="http://silverlight.net/GetStarted/overview.aspx"&gt;all the other cool stuff&lt;/a&gt; in Silverlight 2, we have included the ASP.NET support for Silverlight...&amp;#160;&amp;#160; Just install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en"&gt;Microsoft Silverlight Tools Beta 1 for Visual Studio 2008&lt;/a&gt; to check this out.&amp;#160; &lt;/p&gt;  &lt;p&gt;Check out my recent post for more information: &lt;a href="http://blogs.msdn.com/brada/archive/2008/02/18/islands-of-richness-with-silverlight-on-an-asp-net-page.aspx"&gt;Islands of Richness with Silverlight on an ASP.NET page&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ExpressionMediaEncoderandASP.NET_C63C/image_8.png"&gt;&lt;img height="190" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ExpressionMediaEncoderandASP.NET_C63C/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check out &lt;a href="http://quickstarts.asp.net/3-5-extensions/silverlight/default.aspx"&gt;our quickstarts&lt;/a&gt;, and the new &lt;a href="http://forums.asp.net/1154.aspx"&gt;ASP Silverlight forums&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8053795" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>ASP.NET MVC Preview 2</title><link>http://blogs.msdn.com/brada/archive/2008/03/05/asp-net-mvc-preview-2.aspx</link><pubDate>Wed, 05 Mar 2008 20:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8053329</guid><dc:creator>BradA</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/brada/comments/8053329.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8053329</wfw:commentRss><description>&lt;p&gt;A few weeks ago, ScottGu blogged about the &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx"&gt;ASP.NET MVC Framework roadmap&lt;/a&gt;...&amp;#160;&amp;#160;&amp;#160; I am happy to announce that we have taken the next step on that roadmap with the availability of the ASP.NET MVC Framework update.&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=110956" mce_href="http://go.microsoft.com/fwlink/?LinkID=110956"&gt;&lt;b&gt;ASP.NET MVC Preview 2&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The ASP.NET MVC Preview 2 release contains the latest version of the ASP.NET MVC framework and related Visual Studio tools support. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In this release we have incorporated a ton of feedback, added some new features and enhanced the tooling support!&lt;/p&gt;  &lt;p&gt;Check it out at &lt;a href="http://asp.net/mvc" mce_href="http://asp.net/mvc"&gt;http://asp.net/mvc&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Find some great &lt;a href="http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc" mce_href="http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc"&gt;video overviews of the new features&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Walk through the &lt;a href="http://quickstarts.asp.net/3-5-extensions/mvc/MVCOverview.aspx"&gt;MVC Quickstarts&lt;/a&gt; and use &lt;a href="http://forums.asp.net/1146.aspx"&gt;the MVC forums&lt;/a&gt; to ask questions and get help!&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8053329" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>Mix 08 Schedule Picks</title><link>http://blogs.msdn.com/brada/archive/2008/03/03/mix-08-schedule-picks.aspx</link><pubDate>Mon, 03 Mar 2008 22:27:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8008224</guid><dc:creator>BradA</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/brada/comments/8008224.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8008224</wfw:commentRss><description>&lt;p&gt;I know there are quite a few folks on there way to Vegas right now for &lt;a href="http://visitmix.com/2008/default.aspx"&gt;Mix08&lt;/a&gt;...&amp;#160;&amp;#160; I thought I'd thumb through the session list and give you my picks for some cool Mix 08 session.&amp;#160;&amp;#160;&amp;#160; Even you could not make it to Mix this year, we will be streaming &lt;strong&gt;EVERY SESSION&lt;/strong&gt; ~24 hours after the session ends.&amp;#160;&amp;#160;&amp;#160; So you can join in the fun.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Silverlight Session&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are a TON of great Silverlight sessions... Here are just a couple that I pulled out as the core ones..&lt;/p&gt;  &lt;p&gt;1. &lt;strong&gt;CT01 and CT02 Building Rich Internet Applications Using Microsoft Silverlight 2, Part 1 and 2&lt;/strong&gt; (wed 3p and 4:30)&lt;/p&gt;  &lt;p&gt;Joe Stegman and Mike Harsh walk you end-to-end through building a Silverlight 2 based application.&amp;#160; You like'd &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx"&gt;ScottGu's blog&lt;/a&gt;, you will love this session!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2. &lt;strong&gt;T20 Creating Rich, Dynamic User Interfaces with Silverlight 2&lt;/strong&gt; (Thursday 10:15)&lt;/p&gt;  &lt;p&gt;Dive in a bit deeper into Silverlight 2 and learn how to use the rich set of built in controls as well as building your own custom controls!    &lt;br /&gt;&lt;em&gt;Notice: this session does conflict with mine, but I will not be bitter if you decide to go check this one out, you can catch me on the video later!)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3. &lt;strong&gt;T31 Exploring Moonlight: Novell's Implementation of Silverlight on Linux&amp;#160;&amp;#160; &lt;/strong&gt;(Thursday 4:15)&lt;/p&gt;  &lt;p&gt;You have got to check this out... &lt;a href="http://tirania.org/blog/index.html"&gt;Miguel&lt;/a&gt; never disappoints!&amp;#160; Silverlight on Linux... you gotta see this!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;ASP.NET and AJAX Session:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;T24 Developing Data Driven Applications Using ASP.NET Dynamic Data Controls&lt;/strong&gt;&amp;#160; (Wed 1:30p)      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/davidebb/default.aspx"&gt;David Ebbo&lt;/a&gt; is giving this session.. he is the architect in charge of ASP.NET Dynamic Data... If you want to see how to build an excellent data driven web site, this is the talk for you!      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;T16 Real-World AJAX with ASP.NET&amp;#160;&amp;#160; &lt;/strong&gt;(Thursday 8:30a)      &lt;br /&gt;&lt;a href="http://www.nikhilk.net/"&gt;Nikhil Kothari&lt;/a&gt; is giving this talk.. He is the primary architect for ASP.NET AJAX and Script#.&amp;#160; He will be talking about some real-world issues you run into building an Ajax website and how to address them.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;T34 Building Great AJAX Applications from Scratch Using ASP.NET 3.5 and Visual Studio 2008&amp;#160;&amp;#160; &lt;/strong&gt;(Thursday 10:15a)      &lt;br /&gt;&lt;a href="http:// blogs.msdn.com/brada"&gt;I&lt;/a&gt; will be giving this session and I am super excited about it!&amp;#160;&amp;#160; It is really focused on showing off all the new stuff in VS2008 and ASP.NET 3.5 for Ajax developers.&amp;#160; I have cut ALL the slides from this talk... it is 100% demo!&amp;#160; If you are new to ASP.NET or have not drilled into VS2008 yet, this is the talk for you!      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;T22 Developing ASP.NET Applications Using the Model View Controller Pattern&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;There has been a bunch of buzz about ASP.NET MVC recently... Whether it is pattern based development, Test Driven Development, or high control over the generated markup, ASP.NET MVC is a cool technology for you to check out.&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; is the man to show you all about it!&amp;#160; You gotta check this out.&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;T10 Lighting Up Your AJAX Applications with Silverlight&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Want to take your Ajax app to the next level beyond what the browser can do today?&amp;#160;&amp;#160; Stefan Schackow (from the &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FProfessional-ASP-NET-Security-Membership-Management%2Fdp%2F0764596985%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1204571372%26sr%3D8-2&amp;amp;tag=bradabramsblo-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Professional ASP.NET 2.0 Security, Membership, and Role Management&lt;/a&gt; fame) and Chung Webster take you through how Silverlight is more than just a pretty image generator.&amp;#160; You can see details of how to use the networking stack, local storage, etc.&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;BT02 Building RESTful Real World Applications with the ADO&lt;a href="http://astoria.mslivelabs.com/"&gt;.NET Data Services Framework&lt;/a&gt;&amp;#160;&lt;/strong&gt;&amp;#160;&amp;#160; &lt;br /&gt;REST is the name of the game for web services today.&amp;#160; Come see how to to easily expose and consume RESTful services from Live to your own custom services!&amp;#160; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Got your own picks?&amp;#160; I'd love to hear them!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8008224" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item><item><title>Heading RTP in North Carolina...</title><link>http://blogs.msdn.com/brada/archive/2008/02/25/heading-rtp-in-north-carolina.aspx</link><pubDate>Mon, 25 Feb 2008 18:06:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7893317</guid><dc:creator>BradA</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/brada/comments/7893317.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=7893317</wfw:commentRss><description>&lt;p&gt;In April I will be going to see some family in North Carolina and I thought I'd take the opportunity to speak at the local user group there.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;On April 9th, I will be &lt;a href="http://www.trinug.org/Meetings/Meeting.aspx?MeetingID=35"&gt;speaking at the Triangle .NET User Group&lt;/a&gt; in Raleigh, NC...&amp;#160; &lt;/p&gt;  &lt;p&gt;Here is what I planned to cover..&amp;#160; Sort of think of it like &lt;a href="http://visitmix.com/2008/default.aspx"&gt;Mix08&lt;/a&gt; in 1.5 hours ;-)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/HeadingRTPinNorthCarolina_63EB/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="65" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/HeadingRTPinNorthCarolina_63EB/image_thumb.png" width="184" align="left" border="0" /&gt;&lt;/a&gt; Come hear about the exciting future technologies for web development on .NET.&amp;#160; Brad Abrams, Group Program Manager for the .NET Framework at Microsoft will discuss and demo new web development technology his team is working on.&amp;#160; In particular, you will walk away understand the ASP.NET MVC framework, why it was created and what it is good for.&amp;#160; We will also drill into the new innovations in Silverlight 2 that will be announced at Mix &amp;#8217;08 in Vegas.&amp;#160;&amp;#160; &lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7893317" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category></item></channel></rss>