<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'ASP.NET'</title><link>http://weblogs.asp.net/search/SearchResults.aspx?q=&amp;tag=ASP.NET&amp;orTags=0&amp;o=DateDescending</link><description>Search results matching tag 'ASP.NET'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>ASP.NET MVC Locale User Control (State/Province, Country)</title><link>http://weblogs.asp.net/aaronschnieder/archive/2010/01/04/asp-net-mvc-locale-user-control-state-province-country.aspx</link><pubDate>Mon, 04 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7299106</guid><dc:creator>schnieds</dc:creator><author>schnieds</author><description>&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana,Arial,sans-serif; font-size: 13px; line-height: 16px; text-align: left;"&gt;A while back I wrote a locale control for ASP.NET that gave you a nice and easy way to plug in a cascading state/province – country control into your ASP.NET websites. Now that I have moved on to using ASP.NET MVC for my new projects I needed the same control, only this time in MVC.&lt;/span&gt;&lt;/span&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;Read the full post and download the source here: &lt;a href="http://www.schnieds.com/2010/01/aspnet-mvc-locale-user-control.html"&gt;http://www.schnieds.com/2010/01/aspnet-mvc-locale-user-control.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Aaron Schnieder&lt;br&gt;http://www.churchofficeonline.com&lt;br&gt;&lt;/p&gt;</description></item><item><title>Microsoft MVP for the year 2010</title><link>http://weblogs.asp.net/vikram/archive/2010/01/04/microsoft-mvp-for-the-year-2010.aspx</link><pubDate>Mon, 04 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7299239</guid><dc:creator>vik20000in</dc:creator><author>vik20000in</author><description>&lt;div class="PostBody"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Hi,&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;I feel great joy to share with 
all that I have been rewarded the Microsoft MVP award for the year 2010 also. It 
feels great to have received the Award 2 year in succession. &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;A very Big Thanks to the MVP 
Team, My MVP lead and the Microsoft for giving the MVP award to me. &lt;/p&gt;
&lt;p&gt;Thanks to all the friends, developers, and community members that have worked 
with me. I will try and continue my work forward in 2010......&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Vikram&lt;/p&gt;&lt;/div&gt;</description></item><item><title>ASP.NET Events</title><link>http://weblogs.asp.net/ricardoperes/archive/2010/01/04/asp-net-events.aspx</link><pubDate>Mon, 04 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7299828</guid><dc:creator>RicardoPeres</dc:creator><author>RicardoPeres</author><description>&lt;p&gt;Here is the full list of all events that occur in an ASP.NET application, from the standard modules, to the page, master page, page controls and master page controls.&lt;/p&gt;
&lt;p&gt;I have not included the IIS 7 specific events (&lt;strong&gt;Log&lt;/strong&gt;, for example).&lt;/p&gt;

&lt;table border="0"&gt;
&lt;tr&gt;
	&lt;th style="text-align:left"&gt;What&lt;th&gt;
	&lt;th style="text-align:left"&gt;When&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.BeginRequest&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.AuthenticateRequest&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostAuthenticateRequest&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.AuthorizeRequest&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostAuthorizeRequest&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.ResolveRequestCache&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostResolveRequestCache&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostMapRequestHandler&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.AcquireRequestState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostAcquireRequestState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PreRequestHandlerExecute&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;Page.FrameworkInitialize&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;	
&lt;tr&gt;
	&lt;td&gt;Page.InitializeCulture&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnPreInit&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.FrameworkInitialize&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.FrameworkInitialize&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.FrameworkInitialize&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.OnInit&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.OnInit&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.OnInit&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnInit&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnInitComplete&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.LoadPageStateFromPersistenceMedium&lt;/td&gt;
	&lt;td&gt;If IsPostBack&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.LoadControlState&lt;/td&gt;
	&lt;td&gt;If IsPostBack, RegisterRequiresControlState was called and control state contains elements&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.LoadControlState&lt;/td&gt;
	&lt;td&gt;If IsPostBack, RegisterRequiresControlState was called and control state contains elements&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.LoadViewState&lt;/td&gt;
	&lt;td&gt;If IsPostBack and ViewState contains elements&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.LoadViewState&lt;/td&gt;
	&lt;td&gt;If IsPostBack and ViewState contains elements&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnPreLoad&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnLoad&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.OnLoad&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.OnLoad&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.OnLoad&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;{PageControl|MasterPageControl}.OnCustomEvent&lt;/td&gt;
	&lt;td&gt;If a custom event was fired on a control declared on the page/master page&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;{PageControl|MasterPageControl}.OnBubbleEvent&lt;/td&gt;
	&lt;td&gt;If a custom event was fired on a control declared on the page/master page&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;{Page|MasterPage}.OnBubbleEvent&lt;/td&gt;
	&lt;td&gt;If a custom event was fired on a control declared on the page/master page&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnBubbleEvent&lt;/td&gt;
	&lt;td&gt;If a custom event was fired&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnLoadComplete&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnPreRender&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.OnPreRender&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.OnPreRender&lt;/td&gt;
	&lt;td&gt;If Visible&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.OnPreRender&lt;/td&gt;
	&lt;td&gt;If Visible&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnPreRenderComplete&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.SaveControlState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.SaveControlState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.SaveViewState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.SaveViewState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.SaveViewState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.SaveViewState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.SavePageStateToPersistenceMedium&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnSaveStateComplete&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.Render&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.Render&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.Render&lt;/td&gt;
	&lt;td&gt;If Visible&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.Render&lt;/td&gt;
	&lt;td&gt;If Visible&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnCommitTransaction&lt;/td&gt;
	&lt;td&gt;If Transaction = Required or RequiresNew and a transaction was committed or no transaction was created&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnAbortTransaction&lt;/td&gt;
	&lt;td&gt;If Transaction = Required or RequiresNew and a transaction was rolled back&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.OnUnload&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPageControl.Dispose&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.OnUnload&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;PageControl.Dispose&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.OnUnload&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;MasterPage.Dispose&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.OnUnload&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;Page.Dispose&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;		
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostRequestHandlerExecute&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.ReleaseRequestState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostReleaseRequestState&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.UpdateRequestCache&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PostUpdateRequestCache&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.EndRequest&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PreSendRequestHeaders&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;HttpApplication.PreSendRequestContent&lt;/td&gt;
	&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;pub=xa-4a96c06008dc31e0"&gt;
	&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16"&gt;
&lt;/a&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js?pub=xa-4a96c06008dc31e0"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://shots.snap.com/ss/7dcf59af71ae4ef1d02a114a733595f1/snap_shots.js"&gt;&lt;/script&gt;</description></item><item><title>ASP.NET Ajax Library Beta with Stephen Walther</title><link>http://weblogs.asp.net/craigshoemaker/archive/2010/01/04/asp-net-ajax-library-beta-with-stephen-walther.aspx</link><pubDate>Mon, 04 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7299855</guid><dc:creator>craigshoemaker</dc:creator><author>craigshoemaker</author><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;
</description></item><item><title>Authorizing Access via Attributes in ASP.NET MVC Without Magic Strings</title><link>http://weblogs.asp.net/srkirkland/archive/2010/01/04/authorizing-access-via-attributes-in-asp-net-mvc-without-magic-strings.aspx</link><pubDate>Mon, 04 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7299959</guid><dc:creator>srkirkland</dc:creator><author>srkirkland</author><description>&lt;p&gt;Recently I developed a strategy which I think works well for authorizing access to user groups (Roles) without using the string names of those groups.&lt;/p&gt;  &lt;p&gt;The problem I am trying to avoid is doing something like [Authorize(Roles=”AdminRole”)] on a controller or action since I know the role names can change &amp;amp; one typo can mess everything up.&lt;/p&gt;  &lt;h3&gt;&lt;u&gt;Role Names&lt;/u&gt;&lt;/h3&gt;  &lt;p&gt;So first of all I usually have a static class which has the names &amp;amp; aliases for all roles in case they change:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; RoleNames&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Supervisor = &lt;span style="color: #006080"&gt;&amp;quot;Supervisor&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Admin = &lt;span style="color: #006080"&gt;&amp;quot;StateOffice&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ProjectAdmin = &lt;span style="color: #006080"&gt;&amp;quot;ProjectAdmin&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; DelegateSupervisor = &lt;span style="color: #006080"&gt;&amp;quot;Delegate&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This is pretty standard for me, but unfortunately I can’t just do [Authorize(Roles=RolesNames.Admin)] because attributes requires constant expressions.&amp;#160; So as a solution I came up with the idea of creating a custom attribute which will tightly control access based on specific role criteria.&lt;/p&gt;

&lt;h3&gt;&lt;u&gt;Creating a Custom Authorize Attribute&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;When creating the custom authorize attribute I inherit from AuthorizeAttribute since it already contains most of the logic I need.&amp;#160; All I need to do is set the Roles property in the constructor to a comma delimited list of the authorized roles, and the authorize attribute base class will take care of the rest.&lt;/p&gt;

&lt;p&gt;For example – to restrict access to just the admin role:&amp;#160;&amp;#160; &lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AdminOnlyAttribute : AuthorizeAttribute&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; AdminOnlyAttribute()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Roles = RoleNames.Admin;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Or if you want to include the project admins as well:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AdminOnlyAttribute : AuthorizeAttribute&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; AdminOnlyAttribute()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        var authorizedRoles = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;[] {RoleNames.Admin, RoleNames.ProjectAdmin};&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Roles = &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Join(&lt;span style="color: #006080"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;, authorizedRoles);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;u&gt;Usage&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;Then on your controller you restrict access like this&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;[AdminOnly]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AdminController : Controller{}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And it also works on an action&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AdminController : Controller&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    [AdminOnly]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ActionResult AdminOnlyAction()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; View();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description></item><item><title>ASP.NET Dynamic Data NHibernate Provider</title><link>http://weblogs.asp.net/ricardoperes/archive/2010/01/03/asp-net-dynamic-data-nhibernate-provider.aspx</link><pubDate>Sun, 03 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7298942</guid><dc:creator>RicardoPeres</dc:creator><author>RicardoPeres</author><description>&lt;link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/2.0.320/styles/shCore.css"/&gt; 
&lt;link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/2.0.320/styles/shThemeDefault.css" id="shTheme"/&gt;
&lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shCore.js"&gt;&lt;/script&gt; 
&lt;script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushCSharp.js"&gt;&lt;/script&gt; 

&lt;p&gt;My &lt;a href="http://weblogs.asp.net/ricardoperes/archive/2010/01/01/nhibernatedatasource.aspx" target="_blank"&gt;NHibernateDataSource&lt;/a&gt; was just a necessary step in order to build an ASP.NET Dynamic Data provider for NHibernate. I am pleased to say that it is now working! Like the NHibernateDataSource, it is only - for now - merely a proof of concept, it needs cleaning up and still misses the association metadata part, which means no links to associated entities, but list, edit, delete and insert are working fine.&lt;/p&gt;
&lt;p&gt;If you want to try it, please download it and send me your feedback.&lt;/p&gt;
&lt;p&gt;In order to use it, create a Dynamic Data Web Application project and change the name of the context class on the &lt;strong&gt;Global.asax.cs&lt;/strong&gt; file:

&lt;pre class="brush: csharp"&gt;
model.RegisterContext(new NHibernateDataModelProvider(typeof(MyNHibernateContext)), new ContextConfiguration() { ScaffoldAllTables = true });
&lt;/pre&gt;

&lt;p&gt;Then, on all of the ASPX files under the &lt;strong&gt;DynamicData&lt;/strong&gt; folder, replace the &lt;strong&gt;EntityDataSource&lt;/strong&gt; declaration for the &lt;strong&gt;NHibernateDataSource&lt;/strong&gt;, keeping all of the properties. Add the &lt;strong&gt;NHibernateDataSource&lt;/strong&gt; files to your project and add references to &lt;strong&gt;NHibernate&lt;/strong&gt; and &lt;strong&gt;LINQ to NHibernate&lt;/strong&gt;, from the &lt;a href="http://sourceforge.net/project/nhcontrib" target="_blank"&gt;NHContrib project&lt;/a&gt;, and that's it!&lt;/p&gt;

&lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;pub=xa-4a96c06008dc31e0"&gt;
	&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16"&gt;
&lt;/a&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js?pub=xa-4a96c06008dc31e0"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://shots.snap.com/ss/7dcf59af71ae4ef1d02a114a733595f1/snap_shots.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript"&gt;
SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.320/scripts/clipboard.swf';
SyntaxHighlighter.brushes.CSharp.aliases = ['c#', 'c-sharp', 'csharp'];
SyntaxHighlighter.all();
&lt;/script&gt; </description></item><item><title>ASP.NET 4, ASP.NET MVC, and Silverlight 4 Videos of my Talks in Europe</title><link>http://weblogs.asp.net/scottgu/archive/2010/01/02/asp-net-4-asp-net-mvc-and-silverlight-4-videos-of-my-talks-in-europe.aspx</link><pubDate>Sat, 02 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7298087</guid><dc:creator>ScottGu</dc:creator><author>ScottGu</author><description>&lt;font size="2" family="arial"&gt;   &lt;p&gt;[&lt;em&gt;In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at:&lt;/em&gt; &lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;twitter.com/scottgu&lt;/a&gt;]&lt;/p&gt;    &lt;p&gt;Hope you all had a great holiday – welcome to 2010!&lt;/p&gt;    &lt;p&gt;Last month I did a blog post about some of the &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/12/06/my-presentations-in-europe-december-2009.aspx" target="_blank"&gt;presentations I did in Europe&lt;/a&gt; and posted the slides+demo files from them.&amp;#160; High-quality videos of the talks I did in Sweden were posted two weeks ago on the &lt;a href="http://channel9.msdn.com" target="_blank"&gt;Channel9&lt;/a&gt; site, so you can also now watch videos of the talks online as well.&amp;#160; The videos use a nice format where you can watch me talking as well as the screen at the same time.&amp;#160; The code is readable when running in full-screen mode.&lt;/p&gt;    &lt;p&gt;Below are links to the different talks along with the slides+sample files:&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET 4 and VS 2010 Web Development&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This 90 minute talk provides a nice introduction to ASP.NET 4 and VS 2010 for Web Development.&amp;#160; It is primarily demo-driven and walks-through a lot of the new features coming with the release.&amp;#160; &lt;/p&gt;    &lt;p&gt;The talk starts with a 2 minute introduction of someone introducing me which is in Swedish – but the rest of the talk is of me talking in English.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://bit.ly/8wn5Uj" target="_blank"&gt;Watch the Talk – Part 1&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/5ZPXpT" target="_blank"&gt;Watch the Talk – Part 2&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/VS10_ASPNET4.zip" target="_blank"&gt;Download the Slides&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/VS10_ASP4_Demos.zip" target="_blank"&gt;Download the Demos&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;Read other .NET 4 and VS 2010 blog posts&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This 2 hour talk provides a nice introduction to ASP.NET MVC, and explains it by walking through how to build a simple application with it from scratch.&amp;#160; Along the way it highlights and discusses some of the new features coming in ASP.NET MVC 2.&amp;#160; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://bit.ly/4WbXsF" target="_blank"&gt;Watch the Talk - Part 1&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/5VfraS" target="_blank"&gt;Watch the Talk – Part 2&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/MVC_Dec09_Slides.zip" target="_blank"&gt;Download the Slides&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/MVC_Walkthrough.zip" target="_blank"&gt;Download the Walkthrough Slides&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Silverlight 4&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This 60 minute talk recaps the &lt;a href="http://bit.ly/67G2Q4" target="_blank"&gt;keynote&lt;/a&gt; I gave at PDC.&amp;#160; It walks-through the new Silverlight 4 features and capabilities.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/MSCOMSWE/Silverlight-40/" target="_blank"&gt;Watch the Talk&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/Silverlight4.zip" target="_blank"&gt;Download the Slides&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/12/16/silverlight-4-demos-from-my-pdc-keynote-now-available.aspx" target="_blank"&gt;Download the Samples&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;</description></item><item><title>ASP.NET 4, ASP.NET MVC, and Silverlight 4 Videos of my Talks in Europe</title><link>http://weblogs.asp.net/aspnet-mvc/archive/2010/01/02/asp-net-4-asp-net-mvc-and-silverlight-4-videos-of-my-talks-in-europe.aspx</link><pubDate>Sat, 02 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7298117</guid><dc:creator>Anonymous</dc:creator><author>Anonymous</author><description>&lt;font size="2"&gt;   &lt;p&gt;[&lt;em&gt;In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at:&lt;/em&gt; &lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;twitter.com/scottgu&lt;/a&gt;]&lt;/p&gt;    &lt;p&gt;Hope you all had a great holiday – welcome to 2010!&lt;/p&gt;    &lt;p&gt;Last month I did a blog post about some of the &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/12/06/my-presentations-in-europe-december-2009.aspx" target="_blank"&gt;presentations I did in Europe&lt;/a&gt; and posted the slides+demo files from them.&amp;#160; High-quality videos of the talks I did in Sweden were posted two weeks ago on the &lt;a href="http://channel9.msdn.com" target="_blank"&gt;Channel9&lt;/a&gt; site, so you can also now watch videos of the talks online as well.&amp;#160; The videos use a nice format where you can watch me talking as well as the screen at the same time.&amp;#160; The code is readable when running in full-screen mode.&lt;/p&gt;    &lt;p&gt;Below are links to the different talks along with the slides+sample files:&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET 4 and VS 2010 Web Development&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This 90 minute talk provides a nice introduction to ASP.NET 4 and VS 2010 for Web Development.&amp;#160; It is primarily demo-driven and walks-through a lot of the new features coming with the release.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://bit.ly/8wn5Uj" target="_blank"&gt;Watch the Talk – Part 1&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/5ZPXpT" target="_blank"&gt;Watch the Talk – Part 2&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/VS10_ASPNET4.zip" target="_blank"&gt;Download the Slides&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/VS10_ASP4_Demos.zip" target="_blank"&gt;Download the Demos&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;Read other .NET 4 and VS 2010 blog posts&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This 2 hour talk provides a nice introduction to ASP.NET MVC, and explains it by walking through how to build a simple application with it from scratch.&amp;#160; Along the way it highlights and discusses some of the new features coming in ASP.NET MVC 2.&amp;#160; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://bit.ly/4WbXsF" target="_blank"&gt;Watch the Talk - Part 1&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/5VfraS" target="_blank"&gt;Watch the Talk – Part 2&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/MVC_Dec09_Slides.zip" target="_blank"&gt;Download the Slides&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/MVC_Walkthrough.zip" target="_blank"&gt;Download the Walkthrough Slides&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Silverlight 4&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This 60 minute talk recaps the &lt;a href="http://bit.ly/67G2Q4" target="_blank"&gt;keynote&lt;/a&gt; I gave at PDC.&amp;#160; It walks-through the new Silverlight 4 features and capabilities.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/MSCOMSWE/Silverlight-40/" target="_blank"&gt;Watch the Talk&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://silverlight2blogpost.s3.amazonaws.com/Silverlight4.zip" target="_blank"&gt;Download the Slides&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/12/16/silverlight-4-demos-from-my-pdc-keynote-now-available.aspx" target="_blank"&gt;Download the Samples&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7298087" width="1" height="1" alt="" /&gt;</description></item><item><title>ASP.NET 4, ASP.NET MVC, and Silverlight 4 Videos of my Talks in Europe</title><link>http://weblogs.asp.net/scottgu/archive/2010/01/02/asp-net-4-asp-net-mvc-and-silverlight-4-videos-of-my-talks-in-europe.aspx</link><pubDate>Sat, 02 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7298207</guid><dc:creator>Anonymous</dc:creator><author>Anonymous</author><description>[ In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at: twitter.com/scottgu ] Hope you all had a great holiday – welcome to 2010! Last month I did a blog post about some of the presentations I did in Europe and posted the slides+demo files from them.&amp;#160; High-quality videos of the talks I did in Sweden were posted two weeks ago on the Channel9 site, so you can also now watch videos of the talks online as well.&amp;#160; The videos use a nice format where you can watch me talking as well as the screen at the same time.&amp;#160; The code is readable when running in full-screen mode. Below are links to the different talks along with the slides+sample files: ASP.NET 4 and VS 2010 Web Development This...(&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/01/02/asp-net-4-asp-net-mvc-and-silverlight-4-videos-of-my-talks-in-europe.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7298153" width="1" height="1" alt="" /&gt;</description></item><item><title>2009 Blogged - Greatest Hits</title><link>http://weblogs.asp.net/aspnet-mvc/archive/2010/01/01/2009-blogged-greatest-hits.aspx</link><pubDate>Fri, 01 Jan 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7296859</guid><dc:creator>Anonymous</dc:creator><author>Anonymous</author><description>&lt;div&gt;&lt;p&gt;While I (really) unplugged in December of 2009, you can &lt;a href="http://www.hanselman.com/blog/monthview.aspx?year=2009"&gt;access a nice calendar of all my 2009 posts (as well as other years) at this link&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In 2008 I published a &lt;a href="http://www.hanselman.com/blog/GreatestHits.aspx"&gt;Greatest Hits&lt;/a&gt; post that I will keep updated, but here&amp;#39;s a list of links to the posts I most enjoyed writing this last year. I hope you find some of them useful, and perhaps you missed one or two or you just started reading recently and this 2009 &amp;quot;Greatest Hits&amp;quot; Post will catch you up on the stuff I was thinking about this year.&lt;/p&gt;  &lt;h3&gt;General Geekery &lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/PainfulReminderFocusOnCoreCompetenciesAndBackStuffUp.aspx"&gt;Painful Reminder: Focus on Core Competencies (and Back Stuff Up)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/10AwesomeThingsIRememberAboutComputers.aspx"&gt;10 Awesome Things I Remember About Computers&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/FizzBinTheTechnicalSupportSecretHandshake.aspx"&gt;FizzBin - The Technical Support Secret Handshake&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/PavingMyMachineForAFresh2009FirstPassMustHaves.aspx"&gt;Paving my machine for a fresh 2009 - First-Pass Must-Haves&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/LowBandwidthViewAndOtherHiddenAndFutureFeaturesOfMSDN.aspx"&gt;Low Bandwidth View and other Hidden (and Future) Features of MSDN&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx"&gt;Less Virtual, More Machine - Windows 7 and the magic of Boot to VHD&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SwitchingMyWindows7BootDiskFromDToCWithBCDBootRatherThanBCDEdit.aspx"&gt;Switching my Windows 7 Boot Disk from D to C with BCDBoot rather than BCDEdit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/RunningASubversionServerOffYourWindowsHomeServer.aspx"&gt;Running a Subversion Server off your Windows Home Server&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/VirtualCamaraderieAPersistentVideoPortalForTheRemoteWorker.aspx"&gt;Virtual Camaraderie - A Persistent Video &amp;quot;Portal&amp;quot; for the Remote Worker&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/UpgradingMyLenovoW500ToAOCZVertex250GBSATAIISolidStateDiskSSD.aspx"&gt;Upgrading my Lenovo W500 to a OCZ Vertex 250GB SATA II Solid State Disk (SSD)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/StepByStepTurningAWindows7DVDOrISOIntoABootableVHDVirtualMachine.aspx"&gt;Step-By-Step: Turning a Windows 7 DVD or ISO into a Bootable VHD Virtual Machine&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/StepByStepHowToUpgradeFromWindowsXPToWindows7.aspx"&gt;Step-By-Step: How To &amp;quot;Upgrade&amp;quot; from Windows XP to Windows 7&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx"&gt;Scott Hanselman&amp;#39;s 2009 Ultimate Developer and Power Users Tool List for Windows&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HerdingCatsOrganizeYourDesktopIconsWithStardockFencesForWindows.aspx"&gt;Herding Cats: Organize your Desktop Icons with Stardock Fences for Windows&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/GetThosePixelsWorkingForYou.aspx"&gt;Get those pixels working for you&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Blogging&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/DontGiveBileAPermalinkFindingBalanceWithinTheNoAssholeRule.aspx"&gt;Don&amp;#39;t Give Bile a Permalink - Finding Balance within The No *** Rule&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheseAreTheLittleBugsThatLeadToMadness.aspx"&gt;These are the little bugs that lead to madness&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Twitter&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HowToTwitterFirstStepsAndATwitterGlossary.aspx"&gt;How To Twitter - First Steps and a Twitter Glossary&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/WhenWordOfMouthGotAPermalinkCompaniesCustomersAndTwitter.aspx"&gt;When Word of Mouth Got a Permalink - Companies, Customers and Twitter&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TwitterLetTheInformationWashOverYou.aspx"&gt;Twitter: Let the Information Wash Over You&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Podcasts&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast144WeekThreeInSouthAfricaNtombenhle.aspx"&gt;Week Three in South Africa - Scott talks to his Wife, Ntombenhle&lt;/a&gt; and &lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast153ScottsWifeMoInterviewsScottHanselman.aspx"&gt;Hanselminutes Podcast 153 - Scott&amp;#39;s Wife Mo interviews Scott Hanselman&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast145SOLIDPrinciplesWithUncleBobRobertCMartin.aspx"&gt;Hanselminutes Podcast 145 - SOLID Principles with Uncle Bob - Robert C. Martin&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast161BBSsAndWildcatFromMustangSoftware.aspx"&gt;Hanselminutes Podcast 161 - BBSs and Wildcat! from Mustang Software&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast166WindowsPresentationFoundationExplainedByIanGriffiths.aspx"&gt;Hanselminutes Podcast 166 - Windows Presentation Foundation explained by Ian Griffiths&lt;/a&gt; - I still get mail on this podcasts saying it was the best episode we&amp;#39;ve ever done. The credit for this goes squarely to Ian.&lt;/li&gt;    &lt;li&gt;&amp;quot;&lt;a href="http://channel9.msdn.com/posts/glucose/"&gt;Hanselminutes on 9&lt;/a&gt;&amp;quot; - I did lots of fun videos for Channel 9 this year and I was very proud of these.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Programming&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast145SOLIDPrinciplesWithUncleBobRobertCMartin.aspx"&gt;Hanselminutes Podcast 145 - SOLID Principles with Uncle Bob - Robert C. Martin&lt;/a&gt; (ya, twice. It&amp;#39;s a good show)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/RealWorldAppsInDaysNotWeeks.aspx"&gt;Real World Apps in Days not Weeks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BackToBasics32bitAnd64bitConfusionAroundX86AndX64AndTheNETFrameworkAndCLR.aspx"&gt;Back to Basics: 32-bit and 64-bit confusion around x86 and x64 and the .NET Framework and CLR&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/MixGettingMyHeadAroundOsloMAndMGrammar.aspx"&gt;Mix: Getting my head around Oslo, M and MGrammar&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode39Commodore64EmulatorInSilverlight3.aspx"&gt;The Weekly Source Code 39 - Commodore 64 Emulator in Silverlight 3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode40TweetSharpAndIntroducingTweetSandwich.aspx"&gt;The Weekly Source Code 40 - TweetSharp and Introducing Tweet Sandwich&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx"&gt;Breaking All The Rules with WCF&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/Top10TipsWorkingDevelopersShouldKnowAboutWindows7.aspx"&gt;Top 10 Tips Working Developers Should Know about Windows 7&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode45KickingButtOnWindows7AndWindowsXP.aspx"&gt;The Weekly Source Code 45 - Kicking Butt on Windows 7 *and* Windows XP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ProgrammingForAbsoluteBeginners.aspx"&gt;Programming for Absolute Beginners&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/LightItUpListOfApplicationsThatUseNewWindows7Features.aspx"&gt;Light it Up: List of Applications that use new Windows 7 Features&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;.NET and ASP.NET&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ASPDynamicDataPreviewMoreWaysToExploitADONETDataServicesForFunAndProfit.aspx"&gt;ASP Dynamic Data Preview - More ways to exploit ADO.NET Data Services for fun and profit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx"&gt;Splitting DateTime - Unit Testing ASP.NET MVC Custom Model Binders&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx"&gt;ELMAH: Error Logging Modules and Handlers for ASP.NET (and MVC too!)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/C4AndTheDynamicKeywordWhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx"&gt;C# 4 and the dynamic keyword - Whirlwind Tour around .NET 4 (and Visual Studio 2010) Beta 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ASP4WhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx"&gt;ASP 4 - Whirlwind Tour around .NET 4 (and Visual Studio 2010) Beta 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/MultiBrowserOrCrossBrowserTestingAndDeconstructingMicrosoftExpressionWebSuperPreview.aspx"&gt;MultiBrowser or CrossBrowser Testing and deconstructing Microsoft Expression Web SuperPreview&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Gadgets and Product Reviews&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/AYearWithAnAmazonKindleAndNewKindleCases.aspx"&gt;A year with an Amazon Kindle (and new Kindle Cases)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/AccidentalPrescienceAndTheSecretsOfProjectNatal.aspx"&gt;Accidental Prescience and the Secrets of Project Natal&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ItsAManBagMuzettoLaptopMessengerBagReview.aspx"&gt;It&amp;#39;s a Man-Bag - Muzetto Laptop Messenger Bag Review&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ReviewMophieJuicePackNotTheJuicePackAir.aspx"&gt;Review - Mophie Juice Pack (not the Juice Pack Air)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ReviewMimoMonitorsIMoPivot.aspx"&gt;Review: Mimo Monitors - iMo Pivot&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ReviewTryingClearFromClearwireMobileBroadbandService.aspx"&gt;Review: Trying Clear from Clearwire - Mobile Broadband Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ReviewAndComparisonMicrosoftLifeCamCinemaHDAndVX7000WithHighQualityVideoInSkypeAndLiveMessenger.aspx"&gt;Review and Comparison: Microsoft LifeCam Cinema HD and VX-7000 with High Quality Video in Skype and Live Messenger&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HerdingCatsOrganizeYourDesktopIconsWithStardockFencesForWindows.aspx"&gt;Herding Cats: Organize your Desktop Icons with Stardock Fences for Windows&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ScreenshotsAmazonKindle2GetsBetterBatteryLifeAndNativePDFSupport.aspx"&gt;Screenshots: Amazon Kindle 2 gets Better Battery Life and Native PDF Support&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/ReviewZeoPersonalSleepCoach.aspx"&gt;Review: Zeo Personal Sleep Coach&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheNearFinalWordOnMultiMonitorTaskbarsForWindows7UltramonVsDisplayFusion.aspx"&gt;The (Near) Final Word on Multi-Monitor Taskbars for Windows 7 - Ultramon vs. DisplayFusion&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Speaking and Presentations&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/Mix09FirstHalfRollupAndSessionVideos.aspx"&gt;Mix 09 - First Half Rollup and Session Videos&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspx"&gt;Mix: Mobile Web Sites with ASP.NET MVC and the Mobile Browser Definition File&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SocialNetworkingForDevelopersConferenceTalkVideo.aspx"&gt;Social Networking for Developers - Conference Talk Video&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheHaaHaShowVisitsNETRocks.aspx"&gt;The HaaHa Show visits .NET Rocks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/VideosFromTheNorwegianDevelopersConference.aspx"&gt;Videos from the Norwegian Developer&amp;#39;s Conference&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/OredevKeynoteInformationOverloadAndManagingTheFlowEffectivenessAndEfficiency.aspx"&gt;Oredev Keynote - Information Overload and Managing the Flow: Effectiveness and Efficiency&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/Oredev2009LIVENowRecordedClosingPanelVideo.aspx"&gt;Oredev 2009 - LIVE (now recorded) Closing Panel Video&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Personal Stuff and LifeHacks&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SouthAfrica2008NewsFlashTurnsOutEatingLessAndMovingMoreCausesWeightLoss.aspx"&gt;South Africa 2008: NewsFlash - Turns out eating less and moving more causes weight loss&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TechnicalPresentationsBePreparedForAbsoluteChaos.aspx"&gt;Technical Presentations: Be Prepared for Absolute Chaos&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BabySignLanguage20UpdateAt14Months.aspx"&gt;Baby Sign Language 2.0 - Update at 14 months&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/PaintFenceCutWoodPullWeedPlantTreeFindingGeekBalanceOutsideMyComfortZone.aspx"&gt;Paint Fence, Cut Wood, Pull Weed, Plant Tree - Finding Geek Balance Outside My Comfort Zone&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart7SuccessAndConclusion.aspx"&gt;Building your own Arcade Cabinet for Geeks - Part 7 - Success and Conclusion&lt;/a&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;&lt;strong&gt;The Complete Series&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;ol&gt;     &lt;ol&gt;       &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart1TheCabinet.aspx"&gt;Cabinet and Power&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart2TheMonitor.aspx"&gt;Monitor and Mounting&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart3ControlPanel.aspx"&gt;Control Panel&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart4SoundAndLights.aspx"&gt;Sound and Lights&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart5PaintAndArt.aspx"&gt;Paint and Art&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart6ComputerHardwareAndSoftware.aspx"&gt;Computer Hardware and Software&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BuildingYourOwnArcadeCabinetForGeeksPart7SuccessAndConclusion.aspx"&gt;Success and Conclusion&lt;/a&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/ol&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BestPracticesForIndividualContribution.aspx"&gt;Best Practices for Individual Contribution&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BurntDayINeedADoOverForMonday.aspx"&gt;Burnt Day - I need a Do-Over for Monday&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SquareFootGardeningForProgrammers.aspx"&gt;Square Foot Gardening for Programmers&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheThreeMostImportantOutlookRulesForProcessingMail.aspx"&gt;The Three Most Important Outlook Rules for Processing Mail&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I hope you enjoy these as much as I enjoyed writing them. See you next decade!&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br /&gt;&lt;/div&gt;</description></item></channel></rss>