<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Craig Shoemaker</title><link>http://weblogs.asp.net/craigshoemaker/default.aspx</link><description>&lt;a href="http://polymorphicpodcast.com/"&gt;Host of the Polymorphic Podcast&lt;/a&gt; and &lt;a href="http://infragistics.com/"&gt;New Media Evangelist for Infragistics&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PolymorphicPodcastBlog" /><feedburner:info uri="polymorphicpodcastblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>Mastering ASP.NET Ajax Library on TekPub</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/VexnUUkX4rg/mastering-asp-net-ajax-library-on-tekpub.aspx</link><pubDate>Thu, 11 Feb 2010 16:23:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7343659</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7343659</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2010/02/11/mastering-asp-net-ajax-library-on-tekpub.aspx#comments</comments><description>&lt;p&gt;When &lt;a href="http://blog.wekeroad.com/" mce_href="http://blog.wekeroad.com/" target="_blank"&gt;Rob Conery&lt;/a&gt; (&lt;a href="http://twitter.com/robconery" mce_href="http://twitter.com/robconery" target="_blank"&gt;@robconery&lt;/a&gt;) and &lt;a href="http://infozerk.com/averyblog" mce_href="http://infozerk.com/averyblog" target="_blank"&gt;James Avery&lt;/a&gt; (&lt;a href="http://twitter.com/averyj" mce_href="http://twitter.com/averyj" target="_blank"&gt;@averyj&lt;/a&gt;) announced &lt;a href="http://tekpub.com" mce_href="http://tekpub.com" target="_blank"&gt;TekPub&lt;/a&gt;, I remember thinking, "why didn’t I do something like that!?" :)&lt;/p&gt;

&lt;p&gt;If you are not yet familiar, TekPub is website that provides high-quality screen-cast series on various subjects. The current catalog features the following series:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://tekpub.com/view/concepts/1" mce_href="http://tekpub.com/view/concepts/1" target="_blank"&gt;Concepts&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/coder/1" mce_href="http://tekpub.com/view/coder/1" target="_blank"&gt;Coder to Developer 2009&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/git/1" mce_href="http://tekpub.com/view/git/1" target="_blank"&gt;Mastering Git&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/nhibernate/1" mce_href="http://tekpub.com/view/nhibernate/1" target="_blank"&gt;Mastering NHibernate&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/byob/1" mce_href="http://tekpub.com/view/byob/1" target="_blank"&gt;Building My Blog: Hana&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/linux/1" mce_href="http://tekpub.com/view/linux/1" target="_blank"&gt;Linux for Softies: Setting Up Apache with Rails&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/jquery/1" mce_href="http://tekpub.com/view/jquery/1" target="_blank"&gt;Mastering jQuery&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/aspmvc/1" mce_href="http://tekpub.com/view/aspmvc/1" target="_blank"&gt;Mastering ASP.NET MVC 2.0&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/linq/1" mce_href="http://tekpub.com/view/linq/1" target="_blank"&gt;Mastering LINQ&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tekpub.com/view/byob-rails/1" mce_href="http://tekpub.com/view/byob-rails/1" target="_blank"&gt;Build Your Own Blog: Rails&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What’s nice about a TekPub series is that you get professionals taking you step-by-step through a given technology. Books are great, but there’s always a little added magic when you get to &lt;i&gt;see and hear&lt;/i&gt; the implementation and explanation of what’s being presented.&lt;/p&gt;

&lt;p&gt;Sure, I’m biased though because I am very excited to tell you about the latest series in the TekPub family ‘&lt;a href="http://tekpub.com/view/aspnetajax/1" mce_href="http://tekpub.com/view/aspnetajax/1" target="_blank"&gt;Mastering ASP.NET Ajax Library&lt;/a&gt;’.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://tekpub.com/view/aspnetajax/1" mce_href="http://tekpub.com/view/aspnetajax/1"&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/aspnetajax_slide.png" alt="Mastering ASP.NET Ajax Libarary series on TekPub" mce_src="http://polymorphicpodcast.com/images/blog/aspnetajax_slide.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this series I plan to cover the following aspects of the ASP.NET Ajax Library:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Introduction to the Framework &lt;/li&gt;

  &lt;li&gt;Script Loader 
    &lt;ul&gt;
      &lt;li&gt;Basic Concepts &lt;/li&gt;

      &lt;li&gt;Using the CDN &lt;/li&gt;

      &lt;li&gt;Managing Dependencies &lt;/li&gt;

      &lt;li&gt;Integrating Custom Scripts &lt;/li&gt;

      &lt;li&gt;Lazy Loading Scripts &lt;/li&gt;

      &lt;li&gt;Minifying Scripts for Debug and Release Modes &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;DataView Control 
    &lt;ul&gt;
      &lt;li&gt;Basic Concepts &lt;/li&gt;

      &lt;li&gt;Introduction to Declarative Data Binding &lt;/li&gt;

      &lt;li&gt;Introduction to Imperative Data Binding &lt;/li&gt;

      &lt;li&gt;Changing Data Sources &lt;/li&gt;

      &lt;li&gt;Changing Item Templates &lt;/li&gt;

      &lt;li&gt;Working with Different Binding Modes 
        &lt;ul&gt;
          &lt;li&gt;Auto &lt;/li&gt;

          &lt;li&gt;One Way &lt;/li&gt;

          &lt;li&gt;One Time &lt;/li&gt;

          &lt;li&gt;One Way to Source &lt;/li&gt;

          &lt;li&gt;Two Way &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;

      &lt;li&gt;Working with Binding Customizations 
        &lt;ul&gt;
          &lt;li&gt;Custom Value Converters &lt;/li&gt;

          &lt;li&gt;Default Values Converters &lt;/li&gt;

          &lt;li&gt;Default Values &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;

      &lt;li&gt;Template Manipulations 
        &lt;ul&gt;
          &lt;li&gt;Creating Headers, Footers and locating alternate rows &lt;/li&gt;

          &lt;li&gt;CSS Class Conditional Assignment &lt;/li&gt;

          &lt;li&gt;Formatting Bound Items &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;

      &lt;li&gt;Fetching Data 
        &lt;ul&gt;
          &lt;li&gt;Static HTML &lt;/li&gt;

          &lt;li&gt;ASP.NET WebForms &lt;/li&gt;

          &lt;li&gt;ASP.NET MVC &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;

      &lt;li&gt;WCF Data Services Integration 
        &lt;ul&gt;
          &lt;li&gt;Working with the Data Context Control &lt;/li&gt;

          &lt;li&gt;Declarative Approach &lt;/li&gt;

          &lt;li&gt;Imperative Approach &lt;/li&gt;

          &lt;li&gt;Examples of the Unit of Work pattern &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Observer Pattern Framework 
    &lt;ul&gt;
      &lt;li&gt;Basic Concepts &lt;/li&gt;

      &lt;li&gt;Working with Single Objects &lt;/li&gt;

      &lt;li&gt;Working with Arrays &lt;/li&gt;

      &lt;li&gt;Disconnected Bindings &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Case Study 
    &lt;ul&gt;
      &lt;li&gt;Implementing an editable grid &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is just a preliminary outline as ASP.NET Ajax is currently in beta and the series will also cover further changes up until the RTM release.&lt;/p&gt;

&lt;p&gt;The price is modest for the series, $20 for all the episodes, but feel free to &lt;a href="http://tekpub.com/view/aspnetajax/1" mce_href="http://tekpub.com/view/aspnetajax/1" target="_blank"&gt;check out the first episode on the ScriptLoader for FREE&lt;/a&gt;! *&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;* Update: &lt;/b&gt;You get the first 12 minutes for free, my mistake :)&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Expert Tip&lt;/h2&gt;

&lt;p&gt;I record and watch a lot of screencasts, so take it from your uncle Craig and download the video files and play them at 1.4x, 2x or even faster speeds so you can digest the information as quickly as possible. If you miss something or you need to review, you can simply slow playback to the normal rate and rewind, but having this type of “consumption control” is one of the great reasons to use &lt;a href="http://polymorphicpodcast.com/" mce_href="http://polymorphicpodcast.com/" target="_blank"&gt;audio&lt;/a&gt; and &lt;a href="http://community.infragistics.com/aspnet/media/default.aspx" mce_href="http://community.infragistics.com/aspnet/media/default.aspx" target="_blank"&gt;video&lt;/a&gt; for learning!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7343659" width="1" height="1"&gt;</description><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2010/02/11/mastering-asp-net-ajax-library-on-tekpub.aspx</feedburner:origLink></item><item><title>Presentation: ASP.NET Ajax Library at the Los Angeles .NET User Group</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/okWZNwJKhog/presentation-asp-net-ajax-library-at-the-los-angeles-net-user-group.aspx</link><pubDate>Tue, 02 Feb 2010 03:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7330921</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7330921</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2010/02/01/presentation-asp-net-ajax-library-at-the-los-angeles-net-user-group.aspx#comments</comments><description>&lt;p&gt;Thanks to all who joined my tonight at UCLA for my talk on the ASP.NET Ajax Library. If you are looking for the code to download from the talk you can &lt;a href="http://polymorphicpodcast.com/code/2010-02-01/ASPNETClientTemplates.zip" mce_href="http://polymorphicpodcast.com/code/2010-02-01/ASPNETClientTemplates.zip"&gt;get it here&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7330921" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Presentation/default.aspx">Presentation</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2010/02/01/presentation-asp-net-ajax-library-at-the-los-angeles-net-user-group.aspx</feedburner:origLink></item><item><title>Presentation: ASP.NET AJAX 4 at the Orange Country .NET User Group</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/RpVguJmmFe4/presentation-asp-net-ajax-4-at-the-orange-country-net-user-group.aspx</link><pubDate>Wed, 13 Jan 2010 03:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7308291</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7308291</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2010/01/12/presentation-asp-net-ajax-4-at-the-orange-country-net-user-group.aspx#comments</comments><description>
&lt;p&gt;Thanks to everyone who came to my ASP.NET AJAX 4 talk at the &lt;a href="http://www.ocdotnet.org" mce_href="http://www.ocdotnet.org"&gt;Orange Country .NET User Group&lt;/a&gt;. Special thanks to &lt;a href="http://www.harborobjects.com/RezaMadani/"&gt;Reza Madani&lt;/a&gt; for organizing the talk and running such a great group! &lt;/p&gt;
Here is the code download for the talk:&amp;nbsp; &lt;a href="http://polymorphicpodcast.com/code/2010-01-12/ASPNETClientTemplates.zip" mce_href="http://polymorphicpodcast.com/code/2010-01-12/ASPNETClientTemplates.zip"&gt;ASPNETClientTemplates.zip&lt;/a&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7308291" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Presentation/default.aspx">Presentation</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2010/01/12/presentation-asp-net-ajax-4-at-the-orange-country-net-user-group.aspx</feedburner:origLink></item><item><title>Podcast: Portable Areas with Jeffrey Palermo and Eric Hexter</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/c_L7NQ5_kB8/podcast-portable-areas-with-jeffrey-palermo-and-eric-hexter.aspx</link><pubDate>Thu, 07 Jan 2010 21:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7303672</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7303672</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2010/01/07/podcast-portable-areas-with-jeffrey-palermo-and-eric-hexter.aspx#comments</comments><description>
&lt;p&gt;In this episode of the Polymorphic Podcast &lt;a href="http://geekswithblogs.net/hex/" mce_href="http://geekswithblogs.net/hex/" target="_blank"&gt;Eric Hexter&lt;/a&gt; (&lt;a href="http://twitter.com/ehexter" mce_href="http://twitter.com/ehexter" target="_blank"&gt;@ehexter&lt;/a&gt;) and &lt;a href="http://jeffreypalermo.com/" mce_href="http://jeffreypalermo.com/" target="_blank"&gt;Jeffrey Palermo&lt;/a&gt; (&lt;a href="http://twitter.com/jeffreypalermo" mce_href="http://twitter.com/jeffreypalermo" target="_blank"&gt;@jeffreypalermo&lt;/a&gt;) join &lt;a href="http://weblogs.asp.net/craigshoemaker/" mce_href="http://weblogs.asp.net/craigshoemaker/" target="_blank"&gt;Craig Shoemaker&lt;/a&gt; (&lt;a href="http://twitter.com/craigshoemaker" mce_href="http://twitter.com/craigshoemaker" target="_blank"&gt;@craigshoemaker&lt;/a&gt;) to discuss &lt;a href="http://www.lostechies.com/blogs/hex/archive/2009/11/03/asp-net-mvc-portable-areas-part-3.aspx" mce_href="http://www.lostechies.com/blogs/hex/archive/2009/11/03/asp-net-mvc-portable-areas-part-3.aspx" target="_blank"&gt;Portable Areas&lt;/a&gt;. The Portable Areas contribution to &lt;a href="http://www.codeplex.com/MVCContrib" mce_href="http://www.codeplex.com/MVCContrib" target="_blank"&gt;MVC Contrib&lt;/a&gt; are an option for building single component or multi-page components for ASP.NET websites.&lt;/p&gt;

&lt;a href="http://polymorphicpodcast.com/shows/portableareas/"&gt;&lt;img src="http://polymorphicpodcast.com/images/ListenBanner.png" title="Listen to the Show" alt="Listen to the Show" mce_src="http://polymorphicpodcast.com/images/ListenBanner.png" border="0" height="58" width="378"&gt;&lt;/a&gt;&lt;table border="0" cellpadding="3" cellspacing="3"&gt;&lt;tbody&gt;
    
&lt;tr&gt;
      &lt;th align="left"&gt;Full Speed:&lt;/th&gt;
      
&lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas.mp3" mce_href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      
&lt;td&gt;
&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     
&lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     
&lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas.mp3"&gt;     
&lt;param name="quality" value="high"&gt;     
&lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;
&lt;/td&gt;
    &lt;/tr&gt;

    
&lt;tr&gt;
      &lt;th align="left"&gt;Fast Version:&lt;/th&gt;
      
&lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas_fast.mp3" mce_href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas_fast.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      
&lt;td&gt;
&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     
&lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     
&lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas_fast.mp3"&gt;     
&lt;param name="quality" value="high"&gt;     
&lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;
&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;h2&gt;What Are Portable Areas?&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;Encapsulates the UI functionality of a website and send messages to the application for data access, services, etc. &lt;/li&gt;

  
&lt;li&gt;Can be a single component on the page or come in form of multi-page feature to a site &lt;/li&gt;

  
&lt;li&gt;View logic and view markup are compiled into a single DLL for easy distribution &lt;/li&gt;

  
&lt;li&gt;An option for component model for MVC &lt;/li&gt;

  
&lt;li&gt;Feature of MVC Contrib &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;How Does a Portable Area Communicate with the Host Application?&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;Registers on startup &lt;/li&gt;

  
&lt;li&gt;Sends messages in the form of a class to host application &lt;/li&gt;

  
&lt;li&gt;Messages managed by a ‘message bus’ which is a synchronous communication between area and app &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;How Is Integration Into the Application Handled?&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;For single components, the view will access a HTML helper that in the end points to a controller and view result &lt;/li&gt;

  
&lt;li&gt;For multi-page components, new routes grants access to the new view pages &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;How Do the Areas Handle Layout and External Files?&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;Layout is made consistent by leveraging MVC Framework’s use of default views that may be overridden in the application &lt;/li&gt;

  
&lt;li&gt;Documentation or review of embedded views will give developers of consuming apps the information about hooks required in views &lt;/li&gt;

  
&lt;li&gt;Images, CSS, and script files may be embedded into the DLL or added to the host application &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What Are Some Examples?&lt;/h2&gt;

&lt;p&gt;The following are items Eric and Jeffrey mentioned as examples that are implemented as portable areas, or they would like to see as a portable area. This list will hopefully give you an idea of how and when to use this feature:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Grid &lt;/li&gt;

  
&lt;li&gt;Login &lt;/li&gt;

  
&lt;li&gt;Forums &lt;/li&gt;

  
&lt;li&gt;‘&lt;a href="http://stackoverflow.com/" mce_href="http://stackoverflow.com/" target="_blank"&gt;StackOverflow&lt;/a&gt;’ add-in &lt;/li&gt;

  
&lt;li&gt;Blog engine &lt;/li&gt;

  
&lt;li&gt;RSS reader &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/hex/archive/2009/11/01/asp-net-mvc-portable-areas-via-mvccontrib.aspx" mce_href="http://www.lostechies.com/blogs/hex/archive/2009/11/01/asp-net-mvc-portable-areas-via-mvccontrib.aspx" target="_blank"&gt;ASP.Net MVC Portable Areas via MvcContrib&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://jeffreypalermo.com/blog/consuming-a-portable-area-with-a-web-forms-application/" mce_href="http://jeffreypalermo.com/blog/consuming-a-portable-area-with-a-web-forms-application/" target="_blank"&gt;Consuming a Portable Area with a Web Forms application&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://github.com/jeffreypalermo/mvc2inaction" mce_href="http://github.com/jeffreypalermo/mvc2inaction" target="_blank"&gt;ASP.NET MVC 2 In Action (Second Edition) on GitHub&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://github.com/mvccontrib" mce_href="http://github.com/mvccontrib" target="_blank"&gt;GitHub Repository for MVC Contrib&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://tinyurl.com/mvccontrib" mce_href="http://tinyurl.com/mvccontrib"&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7303672" width="1" height="1"&gt;</description><enclosure url="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2010-01-07-portableareas.mp3" length="29658908" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2010/01/07/podcast-portable-areas-with-jeffrey-palermo-and-eric-hexter.aspx</feedburner:origLink></item><item><title>Amazon Kindle When You Don’t Own a Kindle</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/Q18DfbVPF2g/amazon-kindle-when-you-don-t-own-a-kindle.aspx</link><pubDate>Tue, 05 Jan 2010 20:29:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7301212</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7301212</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2010/01/05/amazon-kindle-when-you-don-t-own-a-kindle.aspx#comments</comments><description>&lt;p&gt;You don’t need to shell out the &lt;a href="http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1262723357&amp;amp;sr=8-1" mce_href="http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1262723357&amp;amp;sr=8-1"&gt;$250+ for a Kindle&lt;/a&gt; – use your &lt;a href="http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000301301" mce_href="http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000301301"&gt;iPhone&lt;/a&gt;, &lt;a href="http://www.amazon.com/gp/kindle/pc" mce_href="http://www.amazon.com/gp/kindle/pc"&gt;netbook or PC&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;For Christmas my lovely bride got me an &lt;a href="http://www.amazon.com/Apple-touch-Generation-NEWEST-MODEL/dp/B002M3SOBU/ref=sr_1_1?ie=UTF8&amp;amp;s=electronics&amp;amp;qid=1262722341&amp;amp;sr=8-1" mce_href="http://www.amazon.com/Apple-touch-Generation-NEWEST-MODEL/dp/B002M3SOBU/ref=sr_1_1?ie=UTF8&amp;amp;s=electronics&amp;amp;qid=1262722341&amp;amp;sr=8-1"&gt;iPod Touch&lt;/a&gt;. Now I am usually not a gadget guy, but this is one of the things I had really wanted since I got her an iTouch for last year’s Christmas. After doing the normal setup I started looking around the AppStore. One of the apps that stuck out to me was &lt;a href="http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000301301" mce_href="http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000301301"&gt;Kindle for iPhone&lt;/a&gt;.&lt;/p&gt;
 

&lt;p&gt;Now when Amazon first introduced the Kindle, my first impression was that I probably wouldn’t like it. For some reason I figured that I would prefer to feel a real paper book in my hand. After installing and using Kindle for iPhone I can say that preference no longer exists.&lt;/p&gt;

&lt;p&gt;I love being able to just pull out my iPod and continue reading a book right where I left off wherever I am at!&lt;/p&gt;
&lt;img src="http://polymorphicpodcast.com/images/blog/KindleiTouchDevice.png" mce_src="http://polymorphicpodcast.com/images/blog/KindleiTouchDevice.png"&gt; 

&lt;p&gt;So I figured that if there was an iPhone version of Kindle, then there was probably a PC version as well. Minutes after installing &lt;a href="http://www.amazon.com/gp/kindle/pc" mce_href="http://www.amazon.com/gp/kindle/pc"&gt;Kindle for PC&lt;/a&gt; I had the same book synchronized to my netbook. This experience was great for reading while holding our newborn baby – no hands necessary. I was fortunate enough to received one of the PDC netbooks (thanks Microsoft and Infragistics for letting me keep it!) so I could use the touch screen features to simply reach up and turn to the next page.&lt;/p&gt;
&lt;img src="http://polymorphicpodcast.com/images/blog/KindleNetbook.png" mce_src="http://polymorphicpodcast.com/images/blog/KindleNetbook.png"&gt; 

&lt;p&gt;Finally I stalled Kindle for PC on my work laptop so I could also have the same books available should I have some time and want to read on a large monitor form factor.&lt;/p&gt;

&lt;p&gt;So if you want most of the benefits of a Kindle reader and don’t want to empty your pockets for the Kindle device you now have the next best thing!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7301212" width="1" height="1"&gt;</description><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2010/01/05/amazon-kindle-when-you-don-t-own-a-kindle.aspx</feedburner:origLink></item><item><title>ASP.NET Ajax Library Beta with Stephen Walther</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/sHopxPFEux8/asp-net-ajax-library-beta-with-stephen-walther.aspx</link><pubDate>Mon, 04 Jan 2010 17:04:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7299855</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7299855</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2010/01/04/asp-net-ajax-library-beta-with-stephen-walther.aspx#comments</comments><description>
&lt;p&gt;&lt;a href="http://stephenwalther.com/" mce_href="http://stephenwalther.com/"&gt;Stephen Walther&lt;/a&gt; (&lt;a href="http://twitter.com/swalther" mce_href="http://twitter.com/swalther"&gt;@swalther&lt;/a&gt;) and Craig Shoemaker discuss the latest announcements surrounding the ASP.NET Ajax Library during PDC09.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/211903.aspx"&gt;&lt;img src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" border="0" height="118" width="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p style="margin-left: 60px;"&gt;&lt;a href="http://feeds.feedburner.com/Pixel8"&gt;Subscribe to the podcast!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;A New Name a New Home&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;Now named &lt;a href="http://ajax.codeplex.com" mce_href="http://ajax.codeplex.com"&gt;ASP.NET AJAX Library&lt;/a&gt; (old name was proprietary) &lt;/li&gt;

  
&lt;li&gt;First contribution to the &lt;a href="http://codeplex.org/" mce_href="http://codeplex.org/"&gt;CodePlex Foundation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What's New for the Beta?&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;OSS and inclusion in the CodePlex Foundation&lt;/li&gt;

  
&lt;li&gt;Microsoft is providing product support even as the library remains OSS&lt;/li&gt;

  
&lt;li&gt;Merging &lt;a href="http://www.asp.net/ajax/AjaxControlToolkit/Samples/" mce_href="http://www.asp.net/ajax/AjaxControlToolkit/Samples/"&gt;Ajax Control Toolkit&lt;/a&gt; (ACT) into the Ajax library&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Unique Features&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;Client Script Loader - loads script dependencies in parallel &lt;/li&gt;

  
&lt;li&gt;No installation necessary - use the &lt;a href="http://www.asp.net/ajaxLibrary/cdn.ashx" mce_href="http://www.asp.net/ajaxLibrary/cdn.ashx"&gt;CDN&lt;/a&gt;&lt;/li&gt;

  
&lt;li&gt;Most ACT controls and functionality supported in client only scenario&lt;/li&gt;

  
&lt;li&gt;ACT HTML editor not in beta, but look for it in RTM &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx"&gt;Minifier functionality&lt;/a&gt; – includes command line tool and MS Build task&lt;/li&gt;

  
&lt;li&gt;Preprocessor&lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.asp.net/ajaxlibrary/" mce_href="http://www.asp.net/ajaxlibrary/"&gt;Wiki for OSS&lt;/a&gt; documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Is jQuery Used Inside Ajax Controls?&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;No dependency on jQuery yet... leaving that up to developer needs &lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7299855" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2010-01-04-ajaxbeta.mp3" length="17777051" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Pixel8/default.aspx">Pixel8</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2010/01/04/asp-net-ajax-library-beta-with-stephen-walther.aspx</feedburner:origLink></item><item><title>Silverlight 4 with Tim Heuer and Jesse Liberty</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/8eVynajFNd0/silverlight-4-with-tim-heuer-and-jesse-liberty.aspx</link><pubDate>Mon, 14 Dec 2009 23:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7278872</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7278872</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/12/14/silverlight-4-with-tim-heuer-and-jesse-liberty.aspx#comments</comments><description>
&lt;p&gt;While the attendees of PDC09 likely expected to hear a plethora of announcements regarding Silverlight 3 all hopes were dashed when Scott Guthrie quickly glossed over advancements in Silverlight 3 to make time to talk about... the &lt;a href="http://silverlight.net/getstarted/silverlight-4-beta/" mce_href="http://silverlight.net/getstarted/silverlight-4-beta/"&gt;Silverlight 4 beta&lt;/a&gt;! &lt;/p&gt;

&lt;p&gt;This episode of &lt;a href="http://getpixel8ed.com" mce_href="http://getpixel8ed.com"&gt;Pixel8&lt;/a&gt; &lt;a href="http://timheuer.com/blog/" mce_href="http://timheuer.com/blog/"&gt;Tim Heuer&lt;/a&gt; (&lt;a href="http://twitter.com/timheuer" mce_href="http://twitter.com/timheuer"&gt;@timheuer&lt;/a&gt;) and &lt;a href="http://blogs.silverlight.net/blogs/jesseliberty/" mce_href="http://blogs.silverlight.net/blogs/jesseliberty/"&gt;Jesse Liberty&lt;/a&gt; (&lt;a href="http://twitter.com/jesseliberty" mce_href="http://twitter.com/jesseliberty"&gt;@jesseliberty&lt;/a&gt;) join &lt;a href="http://weblogs.asp.net/craigshoemaker/" mce_href="http://weblogs.asp.net/craigshoemaker/"&gt;Craig Shoemaker&lt;/a&gt; (&lt;a href="http://twitter.com/craigshoemaker" mce_href="http://twitter.com/craigshoemaker"&gt;@craigshoemaker&lt;/a&gt;) to discuss the new features that excite them as well as projects that have recently caught their attention. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.infragistics.com/pixel8/media/p/209447.aspx"&gt;&lt;img src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" border="0" height="118" width="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p style="margin-left: 60px;"&gt;&lt;a href="http://feeds.feedburner.com/Pixel8"&gt;Subscribe to the podcast!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;h3&gt;Tim Heuer&lt;/h3&gt;
&lt;h4&gt;New Features&lt;/h4&gt;

&lt;p&gt;If you aren’t familiar with what’s new, make sure to read Tim’s &lt;a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx" mce_href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx"&gt;comprehensive post on new features in Silverlight 4 beta&lt;/a&gt;. A point that both Tim and Jesse make is that &lt;a href="http://silverlight.uservoice.com/pages/4325-feature-suggestions" mce_href="http://silverlight.uservoice.com/pages/4325-feature-suggestions"&gt;new features were largely a direct result of customer feedback&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Is WPF Dead?&lt;/h4&gt;

&lt;p&gt;The announcement of IO support, printing and other features often associated with desktop applications left some wondering the fate of WPF. If the chasm between WPF and Silverlight continues to shrink, how do you choose a platform? &lt;/p&gt;

&lt;p&gt;Tim’s advises, if you are targeting Windows, start with WPF. Silverlight is about cross-platform and reach. Both platforms are attempting to be feature compatible. If you must select a “winner” to the debate, perhaps it’s best to say that the winner is XAML. An investment in XAML will keep your options open on the desktop and the web.&lt;/p&gt;

&lt;h4&gt;Advice on Real World Development&lt;/h4&gt;

&lt;p&gt;Tim offers some quick tips for real life Silverlight development:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://www.google.com/search?q=silverlight+mvvm" mce_href="http://www.google.com/search?q=silverlight+mvvm"&gt;Invest time in learning the view model pattern&lt;/a&gt; 
    
&lt;ul&gt;
      
&lt;li&gt;MVVM seems to be the winner in presentation patterns. Even if the approach is not for you be familiar with the concepts 
        &lt;br&gt;&amp;nbsp; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;Understand a composite model and learn to partition your application 
    
&lt;ul&gt;
      
&lt;li&gt;Look at &lt;a href="http://www.codeplex.com/CompositeWPF/" mce_href="http://www.codeplex.com/CompositeWPF/"&gt;Prism&lt;/a&gt; and realize it’s value for building modular and composite applications beyond it’s MVVM support 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;Consider your extensibility points 
    
&lt;ul&gt;
      
&lt;li&gt;&lt;a href="http://www.codeplex.com/MEF" mce_href="http://www.codeplex.com/MEF"&gt;Managed Extensibility Framework (MEF)&lt;/a&gt; for could be used for extensibility or perhaps even building composition into your application &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Designer Developer Workflow&lt;/h4&gt;

&lt;ul&gt;
  
&lt;li&gt;Tim discusses his &lt;a href="http://timheuer.com/blog/archive/2009/10/19/14674.aspx" mce_href="http://timheuer.com/blog/archive/2009/10/19/14674.aspx"&gt;plea to my developer brethren about designer/designers&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;Role of the Integrator (may not be a full time person, but perhaps a senior person on the team able to run interference between developers and designer) &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Jesse Liberty&lt;/h3&gt;

&lt;p&gt;Jesse sees the line of business story a more natural fit in Silverlight 4. By leveraging some of the infrastructure of previous releases, new features offer a richer experience in for common scenarios. For instance:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Leveraging of the &lt;a href="http://blogs.silverlight.net/blogs/jesseliberty/archive/2009/07/18/what-s-new-in-silverlight-3-validation.aspx" mce_href="http://blogs.silverlight.net/blogs/jesseliberty/archive/2009/07/18/what-s-new-in-silverlight-3-validation.aspx"&gt;Visual State Machine&lt;/a&gt; – where validation logic is server-bound, but the client reflects the outcome of this code &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://blogs.silverlight.net/blogs/jesseliberty/archive/2009/11/20/silverlight-4-fluid-ui.aspx" mce_href="http://blogs.silverlight.net/blogs/jesseliberty/archive/2009/11/20/silverlight-4-fluid-ui.aspx"&gt;Fluid UI&lt;/a&gt; – animations for different states of a list box &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jesse is heading up the open source &lt;a href="http://silverlighthvp.codeplex.com/" mce_href="http://silverlighthvp.codeplex.com/"&gt;Silverlight HyperVideo Player&lt;/a&gt; project. The HVP adds in-context links to video content within a video. Jesse is spending time thinking about over all architecture and finer details like &lt;a href="http://blogs.silverlight.net/blogs/jesseliberty/archive/2009/10/27/silverlight-synchronicity.aspx" mce_href="http://blogs.silverlight.net/blogs/jesseliberty/archive/2009/10/27/silverlight-synchronicity.aspx"&gt;accessibility&lt;/a&gt;. A particularly impressive feature Jesse is looking to add to the HVP is a generic marking system that will allow markers to change and be added to a video over time. Look for some innovative work for coming from the &lt;a href="http://silverlighthvp.codeplex.com/" mce_href="http://silverlighthvp.codeplex.com/"&gt;Silverlight HyperVideo Player&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7278872" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2009-12-14-silverlight4.mp3" length="44062504" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Pixel8/default.aspx">Pixel8</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/12/14/silverlight-4-with-tim-heuer-and-jesse-liberty.aspx</feedburner:origLink></item><item><title>Lazy Loading JavaScript Files Using ASP.NET AJAX Script Loader</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/dzVVH1lpj5c/lazy-loading-javascript-files-using-asp-net-ajax-script-loader.aspx</link><pubDate>Wed, 09 Dec 2009 22:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7274856</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7274856</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/12/09/lazy-loading-javascript-files-using-asp-net-ajax-script-loader.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx"&gt;ASP.NET AJAX Script Loader control&lt;/a&gt; will make your life easier. Gone are the days where you have to include a multi-line block of script includes on every web page. Gone are the days of double checking to make sure your script files are included in the right order. Now with the appropriate use of the Script Loader’s &lt;strong&gt;require&lt;/strong&gt; function gone are the days of having to load scripts on your page whether you need them or not.&lt;/p&gt;

&lt;p&gt;Since the Script Loader control programmatically loads scripts into the browser you get imperative control of when and where scripts are loaded. Consider a page that will only load the &lt;a href="http://blogs.visoftinc.com/archive/2009/04/28/ASP.NET-4.0-AJAX-Preview-4-Client-Templates.aspx" mce_href="http://blogs.visoftinc.com/archive/2009/04/28/ASP.NET-4.0-AJAX-Preview-4-Client-Templates.aspx"&gt;dataView scripts&lt;/a&gt; on to the page when a user tries to access an area of the page where an ASP.NET AJAX client template is used to display the data. The following code demonstrates how to accomplish this task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;a href="http://polymorphicpodcast.com/examples/lazyloadscripts/" mce_href="http://polymorphicpodcast.com/examples/lazyloadscripts/"&gt;Make sure to see it in action by checking out the live working copy!&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Script&lt;/h3&gt;

&lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 4px; background-color: rgb(238, 238, 238); font-size: 1.2em;"&gt;&amp;lt;script src="http://weblogs.asp.net/Scripts/MicrosoftAjax/start.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type="text/javascript"&amp;gt;

Sys.require(Sys.scripts.ComponentModel);

Sys.onReady(function()
{
    Sys.addHandler($get("bindButton"), "click", function()
    {
        $get("bindButton").disabled = true;
        Sys.require([Sys.components.dataView], function()
        {
            Sys.create.dataView("#dv", { data: colors });
        });
    });
});

var colors = [
   { Name: "Black" },
   { Name: "Blue" },
   { Name: "White" },
   { Name: "Green" }
];
&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;h3&gt;Markup&lt;/h3&gt;

&lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 4px; background-color: rgb(238, 238, 238); font-size: 1.2em;"&gt;&amp;lt;input type="button" value="Get Colors" id="bindButton" name="bindButton" /&amp;gt;
&amp;lt;ul id="dv" class="sys-template"&amp;gt;
    &amp;lt;li&amp;gt;{{Name}}&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/pre&gt;

&lt;p&gt;Special thanks to &lt;a href="http://blogs.southworks.net/jdominguez/" mce_href="http://blogs.southworks.net/jdominguez/"&gt;Julian Dominguez&lt;/a&gt; (&lt;a href="http://twitter.com/juliandominguez" mce_href="http://twitter.com/juliandominguez"&gt;@juliandominguez&lt;/a&gt;) for helping me work out a few kinks in the first iteration of this code :)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7274856" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/12/09/lazy-loading-javascript-files-using-asp-net-ajax-script-loader.aspx</feedburner:origLink></item><item><title>Presentation: ASP.NET AJAX 4 at Inland Empire .NET User Group</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/YgPuARRt1jA/presentation-asp-net-ajax-4-at-inland-empire-net-user-group.aspx</link><pubDate>Wed, 09 Dec 2009 02:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7273889</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7273889</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/12/08/presentation-asp-net-ajax-4-at-inland-empire-net-user-group.aspx#comments</comments><description>&lt;p&gt;Thanks to everyone who came to my ASP.NET AJAX 4 talk at the &lt;a href="http://www.iedotnetug.org" mce_href="http://www.iedotnetug.org"&gt;Inland Empire .NET User Group&lt;/a&gt;. Special thanks to &lt;a href="http://www.duringlunch.com/" mce_href="http://www.duringlunch.com/"&gt;James Johnson&lt;/a&gt; (&lt;a href="http://twitter.com/latringo" mce_href="http://twitter.com/latringo"&gt;@latringo&lt;/a&gt;) for organizing such a great group! &lt;/p&gt;&lt;p&gt;Here is the code download for the talk:&amp;nbsp; &lt;a href="http://polymorphicpodcast.com/code/2009-12-08/ieug/ASPNETClientTemplates.zip" mce_href="http://polymorphicpodcast.com/code/2009-12-08/ieug/ASPNETClientTemplates.zip"&gt;ASPNETClientTemplates.zip&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7273889" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Presentation/default.aspx">Presentation</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/12/08/presentation-asp-net-ajax-4-at-inland-empire-net-user-group.aspx</feedburner:origLink></item><item><title>ASP.NET Simplicity and Performance with Scott Hunter</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/vBxZRrytw20/asp-net-simplicity-and-performance-with-scott-hunter.aspx</link><pubDate>Fri, 04 Dec 2009 16:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7270703</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7270703</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/12/04/asp-net-simplicity-and-performance-with-scott-hunter.aspx#comments</comments><description>
&lt;p&gt;On this episode of Pixel8 &lt;a href="http://blogs.msdn.com/scothu/" mce_href="http://blogs.msdn.com/scothu/"&gt;Scott Hunter&lt;/a&gt; (&lt;a href="http://twitter.com/coolcsh" mce_href="http://twitter.com/coolcsh"&gt;@coolsch&lt;/a&gt;) joins us to discuss his team’s focus on simplicity and performance in ASP.NET. Scott was kind enough to surprise me with some talking points about what his team is thinking about for releases coming &lt;b&gt;&lt;i&gt;after &lt;/i&gt;&lt;/b&gt;ASP.NET 4! Please note, what’s discussed herein are un-implemented features of ASP.NET so your feedback is not only welcome, but encouraged!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.infragistics.com/pixel8/media/p/207428.aspx"&gt;&lt;img src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" border="0" height="118" width="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p style="margin-left: 60px;"&gt;&lt;a href="http://feeds.feedburner.com/Pixel8"&gt;Subscribe to the podcast!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Velocity Provider for Caching:&lt;/b&gt; This will allow developers to plug in caching scenarios based on their needs.&lt;br&gt;&lt;br&gt; 
    &lt;/li&gt;

&lt;li&gt;&lt;b&gt;Automatic Generation of &lt;/b&gt;&lt;a href="http://www.alistapart.com/articles/sprites" mce_href="http://www.alistapart.com/articles/sprites"&gt;&lt;b&gt;CSS Sprites&lt;/b&gt;&lt;/a&gt;&lt;b&gt;:&lt;/b&gt; Adding images to the Content folder will trigger the ASP.NET framework to stitch together a single image which is later sliced up by inline styles. A helper method is responsible for generating markup of the appropriate CSS coordinates to wire-up the sprite. This feature will allow for groups so related images may be combined together. 
    &lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Complex Helpers:&lt;/b&gt; There are scores of common features and functionality that many developers want to include in their applications, but unfortunately right now these features require a lot of code to implement. In the future you may have helpers available that provide a simple API to do the following: 
    
&lt;ul&gt;
&lt;li&gt;Resize images &lt;/li&gt;

&lt;li&gt;Watermark images &lt;/li&gt;

&lt;li&gt;Flip images &lt;/li&gt;

&lt;li&gt;Send Email - helpers for single method calls to send and mail or verify an address [ex: Email.Send() or Email.VerifyAddress()] &lt;/li&gt;

&lt;li&gt;Schedule Tasks - submit tasks to a background worker process (wouldn’t take down app domain if exception occurred) &lt;/li&gt;

&lt;li&gt;Posting status updates to Facebook, Twitter, etc. &lt;/li&gt;

&lt;li&gt;Polls &lt;/li&gt;

&lt;li&gt;Ratings &lt;/li&gt;

&lt;li&gt;Comments &lt;/li&gt;

&lt;li&gt;OpenID integration &lt;/li&gt;
&lt;/ul&gt;
* Many of these features will likely be released outside the formal ASP.NET framework 
    &lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Data Simplicity:&lt;/b&gt; Active record implementation that features a code-first approach. Consider a blank database with no tables. The active record pattern would allow you to instantiate the &lt;b&gt;Foo&lt;/b&gt; class and then add values to &lt;b&gt;Foo.Bar1&lt;/b&gt; and &lt;b&gt;Foo.Bar2&lt;/b&gt;, then call &lt;b&gt;Foo.Save()&lt;/b&gt;. If the &lt;b&gt;Foo&lt;/b&gt; table does not exist in the database, then the table is created and the data is persisted. Also &lt;b&gt;Foo.All()&lt;/b&gt; would return all the records of &lt;b&gt;Foo&lt;/b&gt;, but the return type is an IQueryable so you could further filter on the server. The code-first won’t be the only direction the integration will work. Changes in the database can be reflected in the model by use of T4 templates. 
    &lt;br&gt;
    &lt;br&gt;&lt;b&gt;Note:&lt;/b&gt; I ask the requisite question about the virtues of the repository pattern as opposed to active record. Scott demonstrates how the implementation they are considering would not hinder you from exposing your own DTOs and wrapping a repository around the active record objects. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also make sure you check out my post &lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/12/04/12-ways-to-simplify-asp-net-and-visual-studio.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2009/12/04/12-ways-to-simplify-asp-net-and-visual-studio.aspx"&gt;12 Ways to Simplify ASP.NET and Visual Studio&lt;/a&gt; I wrote after being inspired by this interview!&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7270703" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2009-12-03-simplicity.mp3" length="36204443" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Pixel8/default.aspx">Pixel8</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/12/04/asp-net-simplicity-and-performance-with-scott-hunter.aspx</feedburner:origLink></item><item><title>12 Ways to Simplify ASP.NET and Visual Studio</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/KHFsCcVuudc/12-ways-to-simplify-asp-net-and-visual-studio.aspx</link><pubDate>Fri, 04 Dec 2009 14:42:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7270602</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>16</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7270602</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/12/04/12-ways-to-simplify-asp-net-and-visual-studio.aspx#comments</comments><description>&lt;p&gt;While at PDC this year I had an opportunity to interview a number of smart and engaging people. One of my guests was &lt;a href="http://blogs.msdn.com/scothu/" mce_href="http://blogs.msdn.com/scothu/"&gt;Scott Hunter&lt;/a&gt; (&lt;a href="http://twitter.com/coolcsh" mce_href="http://twitter.com/coolcsh"&gt;@coolcsh&lt;/a&gt;) who these days is responsible for WebForms, ASP.NET Data and seemingly much more. To my surprise Scott wanted to talk about what is coming &lt;b&gt;&lt;i&gt;after&lt;/i&gt;&lt;/b&gt; ASP.NET 4! &lt;/p&gt;

&lt;p&gt;Taking a step back and looking at ASP.NET, tooling, data and the entire experience of working with the .NET stack Scott’s team and other groups in Microsoft are turning their attention to a single concept…&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Simplicity&lt;/p&gt;

&lt;p&gt;While I will refer you to the &lt;a href="http://getpixel8ed.com" mce_href="http://getpixel8ed.com"&gt;Pixel8&lt;/a&gt; podcast, &lt;a href="http://blogs.infragistics.com/pixel8/media/p/207428.aspx" mce_href="http://blogs.infragistics.com/pixel8/media/p/207428.aspx"&gt;ASP.NET Simplicity and Performance with Scott Hunter&lt;/a&gt;, to hear the details about ideas his team is entertaining to make ASP.NET easer and perform even faster, I thought I would throw in my two cents as well. The following is my wish list of twelve improvements to ASP.NET and Visual Studio that would undoubtedly make development faster and easier.&lt;/p&gt;

&lt;div style="margin-left: 20px;"&gt;
  &lt;h3&gt;1: Overload the DataBind Method &lt;/h3&gt;

  &lt;p&gt;How often have you worked with data bound control and wrote code like this:&lt;/p&gt;

  &lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 4px; background-color: rgb(238, 238, 238); font-family: courier,sans-serif; font-size: 1.2em;"&gt;protected void Page_Load(object sender, EventArgs e)&lt;br&gt;{&lt;br&gt;  this.grid.DataSource = foo;&lt;br&gt;  this.grid.DataBind();&lt;br&gt;}&lt;/pre&gt;

  &lt;p&gt;Wouldn’t it be simpler if you could just call the DataBind method and pass in the data source?&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/databind.png" title="Overload the DataBind method" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/databind.png" height="150" width="629"&gt;&lt;/p&gt;

  &lt;p&gt;You can do this easily today by implementing an extension method as I did here, but it would be nice to have this as a first-class feature of the &lt;a href="http://weblogs.asp.net/controlpanel/blogs/BaseDataBoundControl" mce_href="BaseDataBoundControl"&gt;BaseDataBoundControl&lt;/a&gt; class.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;2: Implement IsFirstRequest Property&lt;/h3&gt;

  &lt;p&gt;The whole notion of the IsPostBack property always seemed a bit awkward to me. More often than not you are using this property to evaluate it’s negative state – in other words trying to figure out if the page is running under the context of the first request. I suggest the addition of a property that is no more than the reverse of IsPostBack:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/firstrequest.png" title="IsFirstRequest property" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/firstrequest.png" height="199" width="667"&gt;&lt;/p&gt;

  &lt;p&gt;It’s a small thing, but I think it makes code a little cleaner to read.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;3: Implement Application Name&lt;/h3&gt;

  &lt;p&gt;Often developers need a way to display the application name to users. While setting up a globally-scoped class to handle this task is trivial, but it would be nice if there was a “Name” property off the page’s locally scoped Application property:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/appname.png" title="Application Name" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/appname.png" height="90" width="456"&gt;&lt;/p&gt;

  &lt;p&gt;The value for this property would likely be saved in the web.config or Global.asax. Adding this feature may also help sort out a common &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers.aspx"&gt;problem that arises in using the membership provider when developers forget to define an application name&lt;/a&gt;. Visual Studio could auto fill this value with the “application name” from the create project wizard and then allow an override at any time.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;4: Option to Categorize IntelliSense Members&lt;/h3&gt;

  &lt;p&gt;Ever wanted to tap into an event of an object, but weren’t sure what the event name was? Ever wanted to know just what an object methods were while trying to learn a new API? What about trying to find out if there is a property for &lt;b&gt;X&lt;/b&gt;? IntelliSense is an invaluable tool in it’s current form and Visual Studio 2010 adds some needed filtering behaviors for C#, but we can do even better.&lt;/p&gt;

  &lt;p&gt;It would be nice if IntelliSense had a way to display members in a categorical format:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/intellisense.png" title="IntelliSense categories" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/intellisense.png" height="262" width="491"&gt;&lt;/p&gt;

  &lt;p&gt;Obviously this isn’t a feature you would want enabled at all times, but it would make working with new APIs much easier.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;5: Bring XAML Data Binding Syntax to ASP.NET&lt;/h3&gt;

  &lt;p&gt;&lt;a href="http://weblogs.asp.net/davidfowler/" mce_href="http://weblogs.asp.net/davidfowler/"&gt;David Fowler&lt;/a&gt; (&lt;a href="http://twitter.com/davidfowl/" mce_href="http://twitter.com/davidfowl/"&gt;@davidfowl&lt;/a&gt;) has been churning out some amazing blog posts all around the topic of data binding in ASP.NET. One of his recent posts included an &lt;a href="http://weblogs.asp.net/davidfowler/archive/2009/11/13/databinding-3-0.aspx" mce_href="http://weblogs.asp.net/davidfowler/archive/2009/11/13/databinding-3-0.aspx"&gt;exposition of DataBinding 3.0&lt;/a&gt;. Basically the latest iteration of data binding brings the XAML syntax to ASP.NET data binding. &lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/bindingsyntax.png" title="XAML data binding syntax is ASP.NET" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/bindingsyntax.png"&gt;&lt;/p&gt;

  &lt;p&gt;This addition makes life easier because then you don’t have to worry about when you use the &lt;b&gt;Bind&lt;/b&gt; or &lt;b&gt;Eval&lt;/b&gt; syntax. Plus making a homogenous binding syntax among WPF, Silverlight, ASP.NET AJAX and ASP.NET WebForms makes working with the controls a natural task regardless of the platform you are working.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;6: Parameter Attributes&lt;/h3&gt;

  &lt;p&gt;When working with QueryString parameters requires some repetitious boilerplate code. Consider the following listing, which you have probably written thousands of times:&lt;/p&gt;

  &lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 4px; background-color: rgb(238, 238, 238); font-family: courier,sans-serif; font-size: 1.2em;"&gt;private string UserName&lt;br&gt;{&lt;br&gt;  get&lt;br&gt;  {&lt;br&gt;    if(Request.QueryString["userName"] != null)&lt;br&gt;    {&lt;br&gt;      return Request.QueryString["userName"].ToString();&lt;br&gt;    }&lt;br&gt;    return string.Empty;&lt;br&gt;  }&lt;br&gt;}&lt;/pre&gt;

  &lt;p&gt;How much simpler would it be if you could just &lt;a href="http://www.codeproject.com/KB/aspnet/QueryStringAttributes.aspx" mce_href="http://www.codeproject.com/KB/aspnet/QueryStringAttributes.aspx"&gt;decorate the property with an attribute and the retrieval code is implemented automatically&lt;/a&gt;?&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/parameters.png" title="Parameter Attributes" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/parameters.png" height="110" width="449"&gt;&lt;/p&gt;

  &lt;p&gt;This approach doesn’t have to stop with the query string either. The same types of attributes may be available for :&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;QueryString &lt;/li&gt;

    &lt;li&gt;Form Elements &lt;/li&gt;

    &lt;li&gt;Context Items &lt;/li&gt;

    &lt;li&gt;Session &lt;/li&gt;

    &lt;li&gt;Cache &lt;/li&gt;

    &lt;li&gt;Cookies &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;7: WebForms Model Binders&lt;/h3&gt;

  &lt;p&gt;One of the features that I immediately fell in love with from the ASP.NET MVC framework was &lt;a href="http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx" mce_href="http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx"&gt;model binders&lt;/a&gt;. With the updates to ASP.NET 4 granting total control over the client IDs of server controls, now WebForms needs model binders!&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/modelbinder.png" title="ASP.NET Model Binders" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/modelbinder.png" height="310" width="642"&gt;&lt;/p&gt;

  &lt;p&gt;The pages could be strongly typed like MVC strongly typed views, or the designer could interrogate the control hierarchy and build the view model on the fly. Obviously we’d also need some hooks to tap into the flow to implement custom bindings too.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;8: JavaScript Model Binders&lt;/h3&gt;

  &lt;p&gt;Just as the server can benefit from automatic mapping of input controls to a model object, Ajax scenarios could be greatly simplified if there was a function to run on the client that automatically created a JSON object with all input values.&lt;/p&gt;

  &lt;p&gt;Consider a form like this:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/dto-ui.png" title="UI" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/dto-ui.png" height="103" width="564"&gt;&lt;/p&gt;

  &lt;p&gt;With markup like this:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/dto-markup.png" title="Markup" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/dto-markup.png" height="294" width="640"&gt;&lt;/p&gt;

  &lt;p&gt;A model, or DTO if you like, could easily be constructed by querying the form and building the object from input elements.&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/dto-js.png" title="JavaScript" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/dto-js.png" height="176" width="583"&gt;&lt;/p&gt;

  &lt;p&gt;There could even be special rules for certain controls like a select list. Sending the selected index, text and value as a group for the single control should provide all the information necessary to consuming resource.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;9: Select the Location of ViewState&lt;/h3&gt;

  &lt;p&gt;While ASP.NET 4 makes great strides to trim down a page’s ViewState it would still be nice to have explicit control over where the ViewState is rendered on the page. I’d love to see a server control that allows you to place the ViewState containers at a location of your choosing:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/viewstate.png" title="ViewSTate Container" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/viewstate.png" height="134" width="560"&gt;&lt;/p&gt;

  &lt;p&gt;Now more times than not the best approach is to simply &lt;a href="http://www.hanselman.com/blog/MovingViewStateToTheBottomOfThePage.aspx" mce_href="http://www.hanselman.com/blog/MovingViewStateToTheBottomOfThePage.aspx"&gt;move ViewState to the bottom of the page&lt;/a&gt;, but having explicit control of the placement seems like the best scenario.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;10: Disabling the Post Back Button&lt;/h3&gt;

  &lt;p&gt;The ASP.NET runtime will not recognize a post back initiated by a disabled button so developers have had to &lt;a href="http://aspalliance.com/829_Disabling_the_Postback_Button" mce_href="http://aspalliance.com/829_Disabling_the_Postback_Button"&gt;concoct some clever ways to protect users from themselves&lt;/a&gt;. It would be nice if ASP.NET had a way to reliably disable post back buttons out-of-the-box.&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/disabled.png" title="Disable PostBack Button" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/disabled.png" height="111" width="306"&gt;&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;11: Implement ASP.NET Configuration Console as Portable Area&lt;/h3&gt;

  &lt;p&gt;&lt;a href="http://www.lostechies.com/blogs/hex/" mce_href="http://www.lostechies.com/blogs/hex/"&gt;Eric Hexter&lt;/a&gt; (&lt;a href="http://twitter.com/ehexter" mce_href="http://twitter.com/ehexter"&gt;@ehexter&lt;/a&gt;) &lt;a href="http://www.lostechies.com/blogs/hex/archive/2009/11/01/asp-net-mvc-portable-areas-via-mvccontrib.aspx" mce_href="http://www.lostechies.com/blogs/hex/archive/2009/11/01/asp-net-mvc-portable-areas-via-mvccontrib.aspx"&gt;recently blogged about the concept of a “portable area”&lt;/a&gt; where you can compile single controls controls or even up to entire workflows into an assembly to later include in an ASP.NET MVC or &lt;a href="http://jeffreypalermo.com/blog/consuming-a-portable-area-with-a-web-forms-application/" mce_href="http://jeffreypalermo.com/blog/consuming-a-portable-area-with-a-web-forms-application/"&gt;WinForms application&lt;/a&gt;. This approach is perfect for implementing the ASP.NET configuration UI generated by Visual Studio.&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/admin.png" title="ASP.NET Configuration Console" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/admin.png" height="608" width="606"&gt; &lt;/p&gt;

  &lt;p&gt;The portable area approach would decouple the screens from the layout seen in this screenshot and allow the pages to reflect the layout of your website. This feature would be perfect for exposing the membership functionality to admins, power users or even just the development team.&lt;/p&gt;

  &lt;p&gt;&amp;nbsp;&lt;/p&gt;

  &lt;h3&gt;12: Script-Based Post Backs&lt;/h3&gt;

  &lt;p&gt;On occasion when working with WebForms under the traditional post back model you may need to implement a JavaScript function that initiates a post back. Right now, the approach for executing this a hack at best. One the best ways I have seen to accomplish this is to add a LinkButton to the page and hide it from the user using CSS. Then you can view source on the page and use the __doPostBack call the LinkButton was using in your custom script – like I said &lt;i&gt;real&lt;/i&gt; hacky :)&lt;/p&gt;

  &lt;p&gt;It would make life much simpler for the times when this functionality is required to have a method off the Sys namespace (or wherever appropriate) that posts back a WebForm. This is how it could look:&lt;/p&gt;

  &lt;p&gt;&lt;img src="http://polymorphicpodcast.com/images/blog/simplicity/scriptpost.png" title="Script-based post backs" mce_src="http://polymorphicpodcast.com/images/blog/simplicity/scriptpost.png" height="244" width="491"&gt;&lt;/p&gt;

  &lt;p&gt;Passing a string into the function would tell the page which handler to map to in the page event lifecycle.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;So there you have it. These are some of my ideas about how to make ASP.NET and Visual Studio simpler to use. Now tell me, what are yours?&lt;/p&gt;
&lt;b&gt;&lt;/b&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7270602" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/visual+studio/default.aspx">visual studio</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/12/04/12-ways-to-simplify-asp-net-and-visual-studio.aspx</feedburner:origLink></item><item><title>nBuilder, Ugly Outfitters and VM Workshop</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/gVB1DNEsqR4/nbuilder-ugly-outfitters-and-vm-workshop.aspx</link><pubDate>Tue, 01 Dec 2009 20:26:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7268080</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7268080</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/12/01/nbuilder-ugly-outfitters-and-vm-workshop.aspx#comments</comments><description>&lt;p&gt;In this episode of the &lt;a href="http://polymorphicpodcast.com/" mce_href="http://polymorphicpodcast.com/"&gt;Polymorphic Podcast&lt;/a&gt; I interview Gareth Down of &lt;a href="http://nbuilder.org/"&gt;nBuilder&lt;/a&gt;. Writing demo applications, prototypes and tests just got a whole lot easier using the fluent interface of nBuilder to quickly generate test objects in .NET.&lt;/p&gt;
&lt;a href="http://polymorphicpodcast.com/shows/nbuilder/"&gt;&lt;img src="http://polymorphicpodcast.com/images/ListenBanner.png" title="Listen to the Show" alt="Listen to the Show" mce_src="http://polymorphicpodcast.com/images/ListenBanner.png" border="0" height="58" width="378"&gt;&lt;/a&gt; 

&lt;table border="0" cellpadding="3" cellspacing="3"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;th align="left"&gt;Full Speed:&lt;/th&gt;

      &lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-12-01-nbuilder.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      &lt;td&gt;&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     &lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     &lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-12-01-nbuilder.mp3"&gt;     &lt;param name="quality" value="high"&gt;     &lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;&lt;br&gt;&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;th align="left"&gt;Fast Version:&lt;/th&gt;

      &lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-12-01-nbuilder_fast.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      &lt;td&gt;&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     &lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     &lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-12-01-nbuilder_fast.mp3"&gt;     &lt;param name="quality" value="high"&gt;     &lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;&lt;br&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;h2&gt;Fast Feed Gets New Life&lt;/h2&gt;

&lt;p&gt;I would like to extend a huge thanks to &lt;a href="http://blog.syntaxc4.net/"&gt;Cory Fowler&lt;/a&gt; (&lt;a href="http://twitter.com/SyntaxC4"&gt;@SyntaxC4&lt;/a&gt;) for his contribution to the &lt;a href="http://feeds2.feedburner.com/PolymorphicPodcastFastFeed"&gt;Polymorphic Podcast Fast Feed&lt;/a&gt;. The Fast Feed is an RSS feed to versions of podcast episodes that are sped up and pitch corrected (no chipmunking here) so you can listen in a fraction of the time. Cory asked me on Twitter &lt;a href="http://twitter.com/SyntaxC4/status/5773195062"&gt;if I planned to convert the show’s archives&lt;/a&gt;. In a gesture of kindness to us all &lt;a href="http://twitter.com/SyntaxC4/status/5773254533"&gt;Cory volunteered to convert the entire back archives of the show&lt;/a&gt; into the “fast” format. Now that I have all the files, I’ll release two vintage shows a week until we catch up to present episodes – it’ll be a blast from the past!&lt;/p&gt;

&lt;p&gt;In all his spare time, Cory is also behind &lt;a href="http://blog.syntaxc4.net/?tag=/jtweetr"&gt;jTweetr&lt;/a&gt; – a jQuery interface for Twitter. Make sure to check out &lt;a href="http://blog.syntaxc4.net/"&gt;Cory’s blog&lt;/a&gt; and his posts on &lt;a href="http://blog.syntaxc4.net/?tag=/jtweetr"&gt;jTweetr&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;p&gt;I highlight a number of resources in the show. Here are the relevant links:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx"&gt;&lt;b&gt;Ugly Outfitters:&lt;/b&gt;&lt;/a&gt; ASP.NET AJAX, jQuery and Infragistics Drag and Drop Framework Mashup &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://polymorphicpodcast.com/vmworkshop"&gt;&lt;b&gt;VM Workshop&lt;/b&gt;&lt;/a&gt;: Reference application for working with MVVM and Presentation Model &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.infragistics.com/pixel8/media/p/201325.aspx"&gt;&lt;b&gt;Introducing 'Shazzam' with Walt Ritscher&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.infragistics.com/pixel8/media/p/201392.aspx"&gt;&lt;b&gt;Data Visualization in the Wild: Chart Analysis with Dr. Tobias Komischke&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/206488.aspx"&gt;&lt;b&gt;User Engaged Prototyping with Billy Hollis&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://jeffreypalermo.com/blog/windows-7-rsquo-s-solution-to-beta-software/"&gt;&lt;b&gt;Windows 7’s solution to beta software : XP Mode&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7268080" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/12/01/nbuilder-ugly-outfitters-and-vm-workshop.aspx</feedburner:origLink></item><item><title>Win Asus Netbook or NetAdvantage for .NET While You’re NotAtPDC!</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/n0WG-5GyB24/win-asus-netbook-or-netadvantage-for-net-while-you-re-notatpdc.aspx</link><pubDate>Mon, 16 Nov 2009 22:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7257088</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7257088</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/16/win-asus-netbook-or-netadvantage-for-net-while-you-re-notatpdc.aspx#comments</comments><description>&lt;p&gt;Even if you can't make it to PDC for the convention you deserve a a chance to win some cool prizes! &lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/16/win-asus-netbook-or-netadvantage-for-net-while-you-re-notatpdc.aspx" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/16/win-asus-netbook-or-netadvantage-for-net-while-you-re-notatpdc.aspx"&gt;Learn how you could win an Asus netbook or a license to NetAdvantage for .NET by following @infragistics and tweeting about a #NotAtPDC session!&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7257088" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Community+News/default.aspx">Community News</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/16/win-asus-netbook-or-netadvantage-for-net-while-you-re-notatpdc.aspx</feedburner:origLink></item><item><title>Integrating Infragistics Drag &amp; Drop with jQuery and Microsoft Ajax Preview 6</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/1gIMn7huWRw/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx</link><pubDate>Tue, 10 Nov 2009 21:15:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7250872</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7250872</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#comments</comments><description>&lt;h2&gt;The Concept&lt;/h2&gt;

&lt;p&gt;I created “&lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx"&gt;Ugly Outfitters&lt;/a&gt;” to showcase the interaction between &lt;a href="http://www.infragistics.com/dotnet/netadvantage/aspnet/dragdrop.aspx#Overview" mce_href="http://www.infragistics.com/dotnet/netadvantage/aspnet/dragdrop.aspx#Overview"&gt;Infragistics Drag &amp;amp; Drop&lt;/a&gt;, &lt;a href="http://jquery.com/" mce_href="http://jquery.com/"&gt;jQuery&lt;/a&gt; and &lt;a href="http://aspnet.codeplex.com/wikipage?title=AJAX&amp;amp;referringTitle=Home" mce_href="http://aspnet.codeplex.com/wikipage?title=AJAX&amp;amp;referringTitle=Home"&gt;Microsoft Ajax Preview 6&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Why Ugly Outfitters? Well, I decided that rather than just dragging around some bland icons on the screen why not attempt to inject a little bit of humor into the process. Like I said... attempt ;)&lt;/p&gt;

&lt;p&gt;If you want to jump right in take a look at this short video demonstrating the application with a quick overview of the code:&lt;/p&gt;

&lt;p&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LUTAwKFybsc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/LUTAwKFybsc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" mce_src="http://www.youtube.com/v/LUTAwKFybsc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Also available are &lt;a href="http://community.infragistics.com/aspnet/media/p/186691.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/186691.aspx"&gt;higher quality versions of the video.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What follows is an excerpt of the discussion of what’s found in Ugly Outfitters. The best way to get acquainted with the details is always to &lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_download" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_download"&gt;download the code&lt;/a&gt; and review it’s design.&lt;/p&gt;

&lt;h2&gt;The Approach&lt;/h2&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-11-06/uo.gif" mce_src="http://media.infragistics.com/community/images/craigs/blog/2009-11-06/uo.gif" align="right" hspace="10" vspace="10"&gt;&lt;/p&gt;

&lt;p&gt;The page is constructed to have a list of shirts on the top of the page, a list of pants along the bottom and a large “outfit designer” area to preview combinations. Along with the coupling of the garment images, when an image is dropped on the page the garment title and description are updated.&lt;/p&gt;

&lt;p&gt;A typical approach of constructing a page like this is often to include a server-side repeater to generate the HTML required to list the shirt and pant images. Instead of explicitly rendering HTML for each list item, this page uses a series of client templates to create the thumb nail lists. The data for the page is served to the client in JSON arrays, rather than being embedded into blocks of HTML. Using the JSON arrays make coding interaction on the page easy as all the required data is available in a programmatically accessible format.&lt;/p&gt;

&lt;h3&gt;Variations&lt;/h3&gt;

&lt;p&gt;The sample is available in three different variations. The first sample uses the ASP.NET ScriptManager control to bring in the required scripts and leverages the code behind to render the JSON array to the page. &lt;/p&gt;

&lt;p&gt;The second sample is exactly the same as the first except instead of using a ScriptManager, the JavaScript files are loaded into the page using the Microsoft Ajax Preview 6 Script Loader control. The Script Loader is used to bring in ASP.NET AJAX, the Client Templates, jQuery and the Infragistics Drag and Drop Framework.&lt;/p&gt;

&lt;p&gt;The final variation extends the second sample, but removes the dependence on the code behind and is a static HTML file. Data is injected into the page by referencing a dynamic JavaScript file. This script file is added as a custom script and then loaded into the page using the Script Loader.&lt;/p&gt;

&lt;p&gt;To read the full write-up including code samples, please check out: &lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_jumpStart" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_jumpStart"&gt;Integrating Infragistics Drag &amp;amp; Drop with jQuery and Microsoft Ajax Preview 6&lt;/a&gt; on my Infragistics blog.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7250872" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/NetAdvantage/default.aspx">NetAdvantage</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Infragistics/default.aspx">Infragistics</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx</feedburner:origLink></item><item><title>Serialize and Deserialize JSON</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/3rAKSzpqTpY/serialize-and-deserialize-json.aspx</link><pubDate>Fri, 06 Nov 2009 16:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7248382</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7248382</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/06/serialize-and-deserialize-json.aspx#comments</comments><description>
&lt;p&gt;On one of the projects I am working on I needed a way to work get the JSON string generated from some sort of serialization process. If you are working Ajax or MVC controller actions, this work is done for you automatically, but I wanted the string all by itself. After some searching I ran across this article &lt;a href="http://msdn.microsoft.com/en-us/library/bb412179.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb412179.aspx"&gt;How to: Serialize and Deserialize JSON Data&lt;/a&gt;. The article is great, and gave me everything I needed to know, but I thought I would make it a little cleaner and wrap it all up in a class.&lt;/p&gt;

&lt;p&gt;Below is the a generic class that will serialize and deserialize JSON:&lt;/p&gt;

&lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 10px; background-color: rgb(238, 238, 238); font-family: courier,courier new,sans-serif; font-size: 1.2em;"&gt;using System.IO;&lt;br&gt;using System.Runtime.Serialization.Json;&lt;br&gt;&lt;br&gt;public class JsonSerializer&lt;t&gt;&lt;br&gt;{&lt;br&gt;    public JsonSerializer() { }&lt;br&gt;&lt;br&gt;    public string Serialize(T instance)&lt;br&gt;    {&lt;br&gt;        using (MemoryStream stream = new MemoryStream())&lt;br&gt;        {&lt;br&gt;            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));&lt;br&gt;            ser.WriteObject(stream, instance);&lt;br&gt;            stream.Position = 0;&lt;br&gt;&lt;br&gt;            using (StreamReader rdr = new StreamReader(stream))&lt;br&gt;            {&lt;br&gt;                return rdr.ReadToEnd();&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;br&gt;    public T Deserialize(string json)&lt;br&gt;    {&lt;br&gt;        using (MemoryStream stream = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(json)))&lt;br&gt;        {&lt;br&gt;            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));&lt;br&gt;            T result = (T)serializer.ReadObject(stream);&lt;br&gt;            return result;    &lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/t&gt;&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: For a more robust solution, &lt;a href="http://twitter.com/jglozano/status/5482607550"&gt;Javier Lozano suggests&lt;/a&gt; checking out &lt;a href="http://www.codeplex.com/Json"&gt;Json.NET&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7248382" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/C_2300_/default.aspx">C#</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/06/serialize-and-deserialize-json.aspx</feedburner:origLink></item></channel></rss>
