<?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:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Michael Baird</title>
    <description>Web Designer and Developer</description>
    <link>http://www.michaeljbaird.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.michaeljbaird.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.michaeljbaird.com/syndication.axd</blogChannel:blink>
    <dc:creator>Michael Baird</dc:creator>
    <dc:title>Michael Baird</dc:title>
    <geo:lat>35.108720</geo:lat>
    <geo:long>-89.797780</geo:long>
    <geo:lat>37.0625</geo:lat><geo:long>-95.67707</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/michaeljbaird" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>ASP.net MVC and JQuery Cascading Dropdown list</title>
      <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CPYpPXNR1REIBLfVnZw-SBkN794/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CPYpPXNR1REIBLfVnZw-SBkN794/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CPYpPXNR1REIBLfVnZw-SBkN794/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CPYpPXNR1REIBLfVnZw-SBkN794/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Imagine that you have an E-Commerce site and you would like the user to drill down into the attributes of a product to help the user find exactly what they need. You display a dropdown list of product colors. Each time a user selects a new color, a dropdown list displaying products available in that color is populated. In this demo, I've created a small application demonstrating on how to use &lt;a title="ASP.net MVC 1.0 framework" href="http://www.asp.net/mvc" target="_blank"&gt;ASP.net MVC 1.0 framework&lt;/a&gt; and &lt;a title="JQuery" href="http://www.jquery.com" target="_blank"&gt;JQuery&lt;/a&gt; to complete the task.     &lt;br /&gt;    &lt;br /&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="ASP_net-MVC-and-JQuery-Dropdown-Cascading" border="0" alt="ASP_net-MVC-and-JQuery-Dropdown-Cascading" src="http://www.michaeljbaird.com/image.axd?picture=WindowsLiveWriter/ASP.netMVCandJQueryCascadingDropdownlist/0E664332/ASP_netMVCandJQueryDropdownCascading_thumb.png" width="500" height="375" /&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h2 class="list"&gt;1-Data Models&lt;/h2&gt;  &lt;p&gt;First, for demonstration purposes and easy download, I created two Model Data sources without the use of SQL. Colors and Products:&lt;/p&gt; &lt;strong&gt;Models/Colors.cs&lt;/strong&gt;   &lt;br /&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace JQueryJsonSelectDemo.Models
{
  public class Color
  {
    public string ColorName { get; set; }
    public string ColorCode { get; set; }
    public int ColorId { get; set; }

    public static IQueryable&amp;lt;Color&amp;gt; GetColorDataList()
    {
      return new List&amp;lt;Color&amp;gt;()   
      {  
         new Color { ColorName = &amp;quot;Blue&amp;quot;, ColorCode = &amp;quot;BL&amp;quot;, ColorId = 1},  
         new Color { ColorName = &amp;quot;Red&amp;quot;, ColorCode = &amp;quot;RD&amp;quot;, ColorId = 2},  
         new Color { ColorName = &amp;quot;Grey&amp;quot;, ColorCode = &amp;quot;GY&amp;quot;, ColorId = 3},  
         new Color { ColorName = &amp;quot;Black&amp;quot;, ColorCode = &amp;quot;BK&amp;quot;, ColorId = 4},  
         new Color { ColorName = &amp;quot;Green&amp;quot;, ColorCode = &amp;quot;GN&amp;quot;, ColorId = 5},  
         new Color { ColorName = &amp;quot;Olive&amp;quot;, ColorCode = &amp;quot;OL&amp;quot;, ColorId = 6},  
         new Color { ColorName = &amp;quot;Orange&amp;quot;, ColorCode = &amp;quot;O&amp;quot;, ColorId = 7},  
         new Color { ColorName = &amp;quot;Pink&amp;quot;, ColorCode = &amp;quot;PK&amp;quot;, ColorId = 8},  
         new Color { ColorName = &amp;quot;Violet&amp;quot;, ColorCode = &amp;quot;V&amp;quot;, ColorId = 9},  
         new Color { ColorName = &amp;quot;Yellow&amp;quot;, ColorCode = &amp;quot;YW&amp;quot;, ColorId = 10}  
      }
      .AsQueryable&amp;lt;Color&amp;gt;();
    }
  }
}&lt;/pre&gt;
&lt;strong&gt;Models/Product.cs&lt;/strong&gt; 

&lt;br /&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace JQueryJsonSelectDemo.Models
{
  public class Product
  {
    public string ProductName { get; set; }
    public int ColorId { get; set; }
    public int ProductId { get; set; }

    public static IQueryable&amp;lt;Product&amp;gt; GetProductDataList()
    {
      return new List&amp;lt;Product&amp;gt;()   
      {  
         new Product { ProductName = &amp;quot;Cup&amp;quot;, ColorId = 2, ProductId = 1},  
         new Product { ProductName = &amp;quot;MP3 Player&amp;quot;, ColorId = 4, ProductId = 2},  
         new Product { ProductName = &amp;quot;52\&amp;quot; LCD TV&amp;quot;, ColorId = 5, ProductId = 3},  
         new Product { ProductName = &amp;quot;Fork&amp;quot;, ColorId = 6, ProductId = 4},  
         new Product { ProductName = &amp;quot;Spoon&amp;quot;, ColorId = 10, ProductId = 5},  
         new Product { ProductName = &amp;quot;Shirt&amp;quot;, ColorId = 6, ProductId = 6},  
         new Product { ProductName = &amp;quot;Pant&amp;quot;, ColorId = 4, ProductId = 7},  
         new Product { ProductName = &amp;quot;Shoes&amp;quot;, ColorId = 2, ProductId = 8},  
         new Product { ProductName = &amp;quot;Sun Glasses&amp;quot;, ColorId = 1, ProductId = 9},  
         new Product { ProductName = &amp;quot;Pen&amp;quot;, ColorId = 2, ProductId = 10}  
      }
      .AsQueryable&amp;lt;Product&amp;gt;();
    }
  }
}&lt;/pre&gt;

&lt;h2 class="list"&gt;2-The Controller&lt;/h2&gt;

&lt;p&gt;Next, I created a class (&lt;code&gt;&lt;em&gt;IndexFormViewModel&lt;/em&gt;&lt;/code&gt;) to pass the Colors as a SelectList Collection to the strongly-typed view. And also create an Action &lt;em&gt;FindProductsByColorID&lt;/em&gt; that returns a JsonResult that will be used by the JQuery code in the view to populate the cascading dropdown list.&lt;/p&gt;
&lt;strong&gt;Controllers/HomeController.cs&lt;/strong&gt; 

&lt;br /&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using JQueryJsonSelectDemo.Models;

namespace JQueryJsonSelectDemo.Controllers
{

  public class IndexFormViewModel
  {

    // Properties
    public SelectList Colors { get; private set; }

    // Constructor
    public IndexFormViewModel()
    {
      var colors = from c in Color.GetColorDataList()
                   select c;
      Colors = new SelectList(colors, &amp;quot;ColorId&amp;quot;, &amp;quot;ColorName&amp;quot;);
    }
  }

  [HandleError]
  public class HomeController : Controller
  {
    public ActionResult Index()
    {
      ViewData[&amp;quot;Message&amp;quot;] = &amp;quot;ASP.net MVC JQuery Cascading Select Demo!&amp;quot;;
      return View(new IndexFormViewModel());
    }

    public ActionResult About()
    {
      return View();
    }

    public JsonResult FindProductsByColorID(int colorid)
    {
      // Simulate Loading Data &amp;quot;wait&amp;quot; 
      System.Threading.Thread.Sleep(1500);

      // return Json result using LINQ to SQL
      return new JsonResult
      {
        Data = (from p in Product.GetProductDataList()
                where p.ColorId == colorid
                select p).ToArray&amp;lt;Product&amp;gt;()
      };
    }
  }
}&lt;/pre&gt;

&lt;h2 class="list"&gt;3-Routing for the Ajax to call.&lt;/h2&gt;

&lt;p&gt;I create a route that I can call using the JQuery Ajax code.&lt;/p&gt;
&lt;strong&gt;Global.asax&lt;/strong&gt; 

&lt;br /&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;      routes.MapRoute(
          &amp;quot;FindProducts&amp;quot;,
          &amp;quot;FindProducts/{colorid}&amp;quot;,
          new { controller = &amp;quot;Home&amp;quot;, action = &amp;quot;FindProductsByColorID&amp;quot;, colorid = &amp;quot;&amp;quot; }
      );&lt;/pre&gt;

&lt;h2 class="list"&gt;4-The View&lt;/h2&gt;

&lt;p&gt;Finally, The view which contains the JQuery code to make an Ajax request to my Home Controller Action (&lt;em&gt;FindProductsByColorID&lt;/em&gt;) which returns a Json Result. If data is returned from the Action, the Products dropdown will be removed from being disabled and the options will be populated by the array from the JsonResult.&lt;/p&gt;
&lt;strong&gt;Views/Home/Index.aspx&lt;/strong&gt; 

&lt;br /&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Views/Shared/Site.Master&amp;quot; Inherits=&amp;quot;System.Web.Mvc.ViewPage&amp;lt;JQueryJsonSelectDemo.Controllers.IndexFormViewModel&amp;gt;&amp;quot; %&amp;gt;
&amp;lt;%@ Import Namespace=&amp;quot;JQueryJsonSelectDemo.Models&amp;quot; %&amp;gt;

&amp;lt;asp:Content ID=&amp;quot;indexTitle&amp;quot; ContentPlaceHolderID=&amp;quot;TitleContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;Home Page&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;Head&amp;quot; ContentPlaceHolderID=&amp;quot;HeadContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
  $(function() {
    $(&amp;quot;select#Colors&amp;quot;).change(function() {
      var color = $(&amp;quot;#Colors &amp;gt; option:selected&amp;quot;).attr(&amp;quot;value&amp;quot;);

      $.ajax({
        type: &amp;quot;GET&amp;quot;,
        contentType: &amp;quot;application/json; charset=utf-8&amp;quot;,
        url: &amp;quot;FindProducts/&amp;quot; + color,
        data: &amp;quot;{}&amp;quot;,
        dataType: &amp;quot;json&amp;quot;,
        success: function(data) {
          $('#ProductsDiv &amp;gt; div').remove(); // remove any existing Products
          if (data.length &amp;gt; 0) {
            var options = '';
            for (p in data) {
              var product = data[p];
              options += &amp;quot;&amp;lt;option value='&amp;quot; + product.ProductId + &amp;quot;'&amp;gt;&amp;quot; + product.ProductName + &amp;quot;&amp;lt;/option&amp;gt;&amp;quot;;
            }
            $(&amp;quot;#Products&amp;quot;).removeAttr('disabled').html(options);

          } else {
            $(&amp;quot;#Products&amp;quot;).attr('disabled', true).html('');
            $(&amp;quot;#ProductsDiv&amp;quot;).append('&amp;lt;div&amp;gt;(None Found)&amp;lt;/div&amp;gt;');
          }
        }
      });
    });
  });
&amp;lt;/script&amp;gt;

&amp;lt;/asp:Content&amp;gt;

&amp;lt;asp:Content ID=&amp;quot;indexContent&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
  &amp;lt;h2&amp;gt;&amp;lt;%= Html.Encode(ViewData[&amp;quot;Message&amp;quot;]) %&amp;gt;&amp;lt;/h2&amp;gt;
  
  &amp;lt;p&amp;gt;
    &amp;lt;label class=&amp;quot;formlabel&amp;quot; for=&amp;quot;Colors&amp;quot;&amp;gt;Colors:&amp;lt;/label&amp;gt;
    &amp;lt;%=Html.DropDownList(&amp;quot;Colors&amp;quot;, Model.Colors)%&amp;gt;
  &amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;
    &amp;lt;div id=&amp;quot;ProductsDiv&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;
    &amp;lt;label class=&amp;quot;formlabel&amp;quot; for=&amp;quot;Products&amp;quot;&amp;gt;Products:&amp;lt;/label&amp;gt;
    &amp;lt;select id=&amp;quot;Products&amp;quot; disabled&amp;gt;&amp;lt;/select&amp;gt;
  &amp;lt;/p&amp;gt;
&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;p&gt;&lt;div class="download"&gt;&lt;a href="http://www.michaeljbaird.com/file.axd?file=2009%2f4%2fJQueryJsonSelectDemo.zip"&gt;Download the Source Code&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=xCa2TJuA0x0:zOyFVNu_fmI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=xCa2TJuA0x0:zOyFVNu_fmI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=xCa2TJuA0x0:zOyFVNu_fmI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=xCa2TJuA0x0:zOyFVNu_fmI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=xCa2TJuA0x0:zOyFVNu_fmI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=xCa2TJuA0x0:zOyFVNu_fmI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=xCa2TJuA0x0:zOyFVNu_fmI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=xCa2TJuA0x0:zOyFVNu_fmI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=xCa2TJuA0x0:zOyFVNu_fmI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/michaeljbaird/~4/xCa2TJuA0x0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/michaeljbaird/~3/xCa2TJuA0x0/post.aspx</link>
      <author>mike.nospam@nospam.michaeljbaird.com (mbaird)</author>
      <comments>http://www.michaeljbaird.com/post/2009/04/13/ASPnet-MVC-and-JQuery-Cascading-Droplist.aspx#comment</comments>
      <guid isPermaLink="false">http://www.michaeljbaird.com/post.aspx?id=a0e29172-10d8-4082-bd20-4f85bf4564f3</guid>
      <pubDate>Mon, 13 Apr 2009 13:32:00 -0600</pubDate>
      <category>Development</category>
      <dc:publisher>mbaird</dc:publisher>
      <pingback:server>http://www.michaeljbaird.com/pingback.axd</pingback:server>
      <pingback:target>http://www.michaeljbaird.com/post.aspx?id=a0e29172-10d8-4082-bd20-4f85bf4564f3</pingback:target>
      <slash:comments>16</slash:comments>
      <trackback:ping>http://www.michaeljbaird.com/trackback.axd?id=a0e29172-10d8-4082-bd20-4f85bf4564f3</trackback:ping>
      <wfw:comment>http://www.michaeljbaird.com/post/2009/04/13/ASPnet-MVC-and-JQuery-Cascading-Droplist.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.michaeljbaird.com/syndication.axd?post=a0e29172-10d8-4082-bd20-4f85bf4564f3</wfw:commentRss>
    <feedburner:origLink>http://www.michaeljbaird.com/post.aspx?id=a0e29172-10d8-4082-bd20-4f85bf4564f3</feedburner:origLink></item>
    <item>
      <title>My Toolbox</title>
      <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7EBLGmSAQQSmQKcw_8HfBJRFeZU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7EBLGmSAQQSmQKcw_8HfBJRFeZU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7EBLGmSAQQSmQKcw_8HfBJRFeZU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7EBLGmSAQQSmQKcw_8HfBJRFeZU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;
I develop for both front end and backend ASP.net web applications and I find myself using a slew of applications on a daily basis. Also, I have hobbies of game map creation using &lt;a href="http://developer.valvesoftware.com/wiki/SDK_Docs" target="_blank" title="Valve Source SDK"&gt;Source SDK Tools&lt;/a&gt;, Video Editing, and 3D modeling. Everytime I format my PC at home, I write out a laundry list of applications that I need to install.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.michaeljbaird.com/image.axd?picture=2008%2f10%2fMy_ToolBox.png" alt="My Toolbox" /&gt;
&lt;/p&gt;

&lt;h2&gt;&amp;nbsp;General Software&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.7-zip.org" target="_blank" title="7-Zip"&gt;7-Zip&lt;/a&gt; - Open Source file archiver that handles &lt;u&gt;Packing &amp;amp; unpacking&lt;/u&gt;: 7z, ZIP, GZIP, BZIP2 and TAR; &lt;u&gt;Unpacking only&lt;/u&gt;: RAR, CAB, ISO, ARJ, LZH, CHM, MSI, WIM, Z, CPIO, RPM, DEB and NSIS &lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.techsmith.com/camtasia.asp" target="_blank" title="Camtasia Studio"&gt;Camtasia Studio&lt;/a&gt; - Easily record your screen to create training, demo, and presentation video.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/" target="_blank" title="Mozilla Firefox"&gt;FireFox&lt;/a&gt; - Best browser on the planet.&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://www.mesh.com/Welcome/Welcome.aspx" target="_blank" title="Live Mesh"&gt;Live Mesh&lt;/a&gt; - Keeps some files and folders in sync on multiple computers.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://file-folder-ren.sourceforge.net/" target="_blank" title="M&amp;eacute;tamorphose"&gt;M&amp;eacute;tamorphose&lt;/a&gt; - Open Source to mass rename files and folders.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://notepad-plus.sourceforge.net/" target="_blank" title="Notepad++"&gt;Notepad++&lt;/a&gt; - Free source code editor.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/default.aspx" target="_blank" title="Microsoft Office"&gt;Office&lt;/a&gt; - I do not use Office too often as I have my email going through gmail, but I still find myself using Outlook to at least sync my IMAP account.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html" target="_blank" title="Virtual CloneDrive"&gt;Virtual CloneDrive&lt;/a&gt; - Free virtual drive software.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://windowslivewriter.spaces.live.com/" target="_blank" title="Windows Live Writer"&gt;Windows Live Writer&lt;/a&gt; - Write and save blog posts. Intergrates nicely with BlogEngine.net.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.xobni.com" target="_blank" title="Xobni"&gt;Xobni&lt;/a&gt; - Best Outlook plug-in to search and give stats about your inbox.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://messenger.yahoo.com" target="_blank" title="Yahoo Messenger"&gt;Yahoo Messenger&lt;/a&gt; - The only IM I need to stay in touch with friends and family.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.zune.net/en-US/" target="_blank" title="Microsoft Zune"&gt;Zune&lt;/a&gt; - Yes, I own a Zune. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Graphic Design/Game Development/3D Modeling&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.adobe.com/products/photoshop/photoshopextended/" target="_blank" title="Adobe Photoshop"&gt;Adobe Photoshop&lt;/a&gt; - Best image editor to date.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.adobe.com/products/illustrator/" target="_blank" title="Adobe Illustrator"&gt;Adobe Illustrator&lt;/a&gt; - Sometimes I need clean vector graphics. &lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.pixologic.com" target="_blank" title="Pixologic ZBrush"&gt;Pixologic ZBrush&lt;/a&gt; - Powerful 3D software to help sculpt detail into 3D geometry for games and film.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://softimage.com/" target="_blank" title="Softimage XSI"&gt;Softimage XSI&lt;/a&gt; - 3D software for games, television and film.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://developer.valvesoftware.com/wiki/SDK_Docs" target="_blank" title="Valve Source SDK Tools"&gt;Valve Source SDK Tools&lt;/a&gt; - Game Developer toolkit to make and mod Valve Source games and Source Engine based games.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Development Software&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.adobe.com/products/dreamweaver/" target="_blank" title="Adobe Dreamweaver"&gt;Adobe Dreamweaver&lt;/a&gt; - I make most of my CSS designs in Dreamweaver.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.adobe.com/products/flash/" target="_blank" title="Adobe Flash"&gt;Adobe Flash&lt;/a&gt; - Making rotating banners...etc. with actionscript.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.adobe.com/products/flex/" target="_blank" title="Adobe Flex"&gt;Adobe Flex&lt;/a&gt; - Software to help create Flash based Rich Internet Applications.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.aptana.com" target="_blank" title="Aptana Studio"&gt;Aptana Studio&lt;/a&gt; - A nice Open Source IDE for Javascript.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.vistadb.net" target="_blank" title="VistaDB"&gt;VistaDB&lt;/a&gt; - The lightweight alternative to SQL Server.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vs2008/products/bb894671.aspx" target="_blank" title="Visual Studio 2008"&gt;Visual Studio 2008&lt;/a&gt; - Of course you know about this program.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.winmerge.org" target="_blank" title="WinMerge"&gt;WinMerge&lt;/a&gt; - A nice Open Source comparison tool.&lt;br /&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Games&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.callofduty.com/" target="_blank" title="Call of Duty 4"&gt;Call of Duty 4&lt;/a&gt; - One of the nicest looking FPS to date. &lt;/li&gt;
	&lt;li&gt;&lt;a href="http://store.steampowered.com/app/240/" target="_blank" title="Counter Strike:Source"&gt;Counter Strike:Source&lt;/a&gt; - Oldie but goodie FPS Terroist vs Counter-Terrorist. &lt;/li&gt;
	&lt;li&gt;&lt;a href="http://store.steampowered.com/app/300/" target="_blank" title="Day of Defeat:Source"&gt;Day of Defeat:Source&lt;/a&gt; - Similiar to CS:S but based on WWII.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://store.steampowered.com/app/440/" target="_blank" title="Team Fortress 2"&gt;Team Fortress 2&lt;/a&gt; - Change of the &amp;#39;real-life&amp;#39; look FPS.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.unrealtournament3.com/" target="_blank" title="Unreal Tournament 3"&gt;Unreal Tournament 3&lt;/a&gt; - Arcade FPS.&lt;br /&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=gy8sR-08OFs:W18KpCOtcXk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=gy8sR-08OFs:W18KpCOtcXk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=gy8sR-08OFs:W18KpCOtcXk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=gy8sR-08OFs:W18KpCOtcXk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=gy8sR-08OFs:W18KpCOtcXk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=gy8sR-08OFs:W18KpCOtcXk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=gy8sR-08OFs:W18KpCOtcXk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=gy8sR-08OFs:W18KpCOtcXk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=gy8sR-08OFs:W18KpCOtcXk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/michaeljbaird/~4/gy8sR-08OFs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/michaeljbaird/~3/gy8sR-08OFs/post.aspx</link>
      <author>mike.nospam@nospam.michaeljbaird.com (mbaird)</author>
      <comments>http://www.michaeljbaird.com/post/2008/10/22/My-Toolbox.aspx#comment</comments>
      <guid isPermaLink="false">http://www.michaeljbaird.com/post.aspx?id=b93d722b-3896-4239-bef2-35bcaac07437</guid>
      <pubDate>Wed, 22 Oct 2008 12:42:00 -0600</pubDate>
      <category>Software</category>
      <dc:publisher>mbaird</dc:publisher>
      <pingback:server>http://www.michaeljbaird.com/pingback.axd</pingback:server>
      <pingback:target>http://www.michaeljbaird.com/post.aspx?id=b93d722b-3896-4239-bef2-35bcaac07437</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.michaeljbaird.com/trackback.axd?id=b93d722b-3896-4239-bef2-35bcaac07437</trackback:ping>
      <wfw:comment>http://www.michaeljbaird.com/post/2008/10/22/My-Toolbox.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.michaeljbaird.com/syndication.axd?post=b93d722b-3896-4239-bef2-35bcaac07437</wfw:commentRss>
    <feedburner:origLink>http://www.michaeljbaird.com/post.aspx?id=b93d722b-3896-4239-bef2-35bcaac07437</feedburner:origLink></item>
    <item>
      <title>BlogEngine.net Custom Widget Properties</title>
      <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t3JKGNcoGGvJthk9jyhTceiIobk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t3JKGNcoGGvJthk9jyhTceiIobk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t3JKGNcoGGvJthk9jyhTceiIobk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t3JKGNcoGGvJthk9jyhTceiIobk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;
For the theme on my site, I wanted to add individual styles to certain widgets to differentiate them from one and another and break up the monotonous look. In order to do that, I added a property to the Widget called CSSClass that appends a name to the existing class: &lt;strong&gt;widget&lt;/strong&gt; so you can add different styles in your css to change the look of certain widgets.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.michaeljbaird.com/image.axd?picture=2008%2f9%2fBlogEngine_net-Custom-Widgets.png" alt="BlogEngine.net Custom Widget Styles" title="BlogEngine.net Custom Widget Styles" /&gt;
&lt;/p&gt;

&lt;p&gt;
So instead of class=&amp;quot;widget&amp;quot;, you could have &lt;strong&gt;class=&amp;quot;widget_green&amp;quot;&lt;/strong&gt; or &lt;strong&gt;class=&amp;quot;widget_red&amp;quot;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;App_GlobalResources/&lt;/h2&gt;
Add name: cssClass value: CSS Class
&lt;h2&gt;App_Code/Controls/&lt;/h2&gt;
&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;
//Add this to properties at top of WidgetBase.cs
private string _CSSClass;
/// 
/// Gets or sets the style of the widget. It is mandatory for all widgets to set the Style.
/// 
/// The style of the widget.
public string CSSClass
{
get { return _CSSClass; }
set { _CSSClass = value; }
}
//Added CssClass to widget class attribute to &amp;quot;protected override void Render(HtmlTextWriter writer)&amp;quot; and some custom title class and bottom class for my postit note widget styles
protected override void Render(HtmlTextWriter writer)
{
if (string.IsNullOrEmpty(Name))
throw new NullReferenceException(&amp;quot;Name must be set on a widget&amp;quot;);
StringBuilder sb = new StringBuilder();
sb.Append(&amp;quot;
&lt;div id="\&amp;quot;widget&amp;quot;" class="\&amp;quot;widget&amp;quot;"&gt;
&amp;quot;);
if (Thread.CurrentPrincipal.IsInRole(BlogSettings.Instance.AdministratorRole))
{
sb.Append(&amp;quot;&lt;a href="http://www.michaeljbaird.com/admin/Pages/%5C%22javascript:void%280%29%5C%22" title="\&amp;quot;&amp;quot;" class="\&amp;quot;delete\&amp;quot;" onclick="\"removeWidget('""&gt;X&lt;/a&gt;&amp;quot;);
if (IsEditable)
sb.Append(&amp;quot;&lt;a href="http://www.michaeljbaird.com/admin/Pages/%5C%22javascript:void%280%29%5C%22" title="\&amp;quot;&amp;quot;" class="\&amp;quot;edit\&amp;quot;" onclick="\"editWidget('""&gt;&amp;quot; + Resources.labels.edit + &amp;quot;&lt;/a&gt;&amp;quot;);
}
if (ShowTitle)
{
sb.Append(&amp;quot;
&lt;div class="\&amp;quot;widget_title\&amp;quot;"&gt;
&lt;h4&gt;&amp;quot; + Title + &amp;quot;&lt;/h4&gt;
&lt;/div&gt;
&amp;quot;);
}
else
{
sb.Append(&amp;quot;&amp;nbsp;&amp;quot;);
}
sb.Append(&amp;quot;
&lt;div class="\&amp;quot;content\&amp;quot;"&gt;
&amp;quot;);
writer.Write(sb.ToString());
base.Render(writer);
writer.Write(&amp;quot;
&lt;/div&gt;
&amp;quot;);
writer.Write(&amp;quot;&amp;quot;);
writer.Write(&amp;quot;
&lt;/div&gt;
&amp;quot;);
}
&lt;/pre&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;
//Add to WidgetEditBase.cs Properties
private string _CSSClass;
/// 
/// Gets or sets the CSS class of the widget. It is mandatory for all widgets to set the CSS Class.
/// 
/// The CSS class of the widget.
public string CSSClass
{
get { return _CSSClass; }
set { _CSSClass = value; }
}
[/code]
[code=c#;WidgetZone.cs]
//Add to WidgetZone.cs &amp;quot;protected override void OnLoad(EventArgs e)&amp;quot;
control.CSSClass = widget.Attributes[&amp;quot;cssclass&amp;quot;].InnerText;
[/code]
&lt;h2&gt;admin/&lt;/h2&gt;
[code=csharp;WidgetEditor.aspx]
//Add to WidgetEditor.aspx below &amp;quot;&amp;quot;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%=Resources.labels.cssClass %&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[/code]
[code=c#;WidgetEditor.cs]
//Add to WidgetEditor.cs in &amp;quot;private void btnSave_Click(object sender, EventArgs e)&amp;quot;
if (node.Attributes[&amp;quot;cssclass&amp;quot;].InnerText != txtCSSClass.Text.Trim())
{
node.Attributes[&amp;quot;cssclass&amp;quot;].InnerText = txtCSSClass.Text.Trim();
isChanged = true;
}
//Add to &amp;quot;private void SaveNewWidget(WidgetBase widget)&amp;quot;
XmlAttribute cssclass = doc.CreateAttribute(&amp;quot;cssclass&amp;quot;);
cssclass.InnerText = &amp;quot;&amp;quot;;
node.Attributes.Append(cssclass);
//Change to &amp;quot;private void InitEditor(string type, string id)&amp;quot;
private void InitEditor(string type, string id)
{
XmlDocument doc = GetXmlDocument();
XmlNode node = doc.SelectSingleNode(&amp;quot;//widget[@id=\&amp;quot;&amp;quot; + id + &amp;quot;\&amp;quot;]&amp;quot;);
string fileName = Utils.RelativeWebRoot + &amp;quot;widgets/&amp;quot; + type + &amp;quot;/edit.ascx&amp;quot;;
if (File.Exists(Server.MapPath(fileName)))
{
WidgetEditBase edit = (WidgetEditBase)LoadControl(fileName);
edit.WidgetID = new Guid(node.Attributes[&amp;quot;id&amp;quot;].InnerText);
edit.Title = node.Attributes[&amp;quot;title&amp;quot;].InnerText;
edit.ID = &amp;quot;widget&amp;quot;;
edit.ShowTitle = bool.Parse(node.Attributes[&amp;quot;showTitle&amp;quot;].InnerText);
edit.CSSClass = node.Attributes[&amp;quot;cssclass&amp;quot;].InnerText;
phEdit.Controls.Add(edit);
}
if (!Page.IsPostBack)
{
cbShowTitle.Checked = bool.Parse(node.Attributes[&amp;quot;showTitle&amp;quot;].InnerText);
txtTitle.Text = node.Attributes[&amp;quot;title&amp;quot;].InnerText;
txtTitle.Focus();
txtCSSClass.Text = node.Attributes[&amp;quot;cssclass&amp;quot;].InnerText;
btnSave.Text = Resources.labels.save;
}
btnSave.Click += new EventHandler(btnSave_Click);
}
[/code]
[code=js;widget.js]
//Change to &amp;quot;function editWidget(name, id)&amp;quot; for additional 50px from 500 to 550 height because of extra Property
var size = { &amp;#39;height&amp;#39;: 550, &amp;#39;width&amp;#39;: 750 };
&lt;/pre&gt;
&lt;h2&gt;CSS Example&lt;/h2&gt;
&lt;pre class="brush: css; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;
/***********************************************
** WIDGETS
***********************************************/
/*GLOBAL*/
.widget,
.widget_green,
.widget_red,
.widget_blue{
width: 240px;
margin-bottom: 20px;
padding: 0;
display: block;
}
.widget ul,
.widget_green ul,
.widget_red ul,
.widget_blue ul{
list-style: none;
padding: 0;
margin: 0;
}
.widget li,
.widget_green li,
.widget_red li,
.widget_blue li{
margin: 0 0 0 15px;
}
.widget .content,
.widget_green .content,
.widget_red .content,
.widget_blue .content{
padding: 15px 10px 15px 10px;
}
.widget-bottom,
.widget_green-bottom,
.widget_red-bottom,
.widget_blue-bottom{
width: 240px;
height: 5px;
}
.widget .edit,
.widget_green .edit,
.widget_red .edit,
.widget_blue .edit{
float: right;
margin: 0 5px 0 0;
}
.widget .delete,
.widget_green .delete,
.widget_red .delete,
.widget_blue .delete{
float: right;
}
/*YELLOW*/
.widget{background: url(css/images/grunged_widget_yellow.png) 0 top no-repeat scroll;}
.widget-bottom{background: url(css/images/grunged_widget_yellow.png) 0 bottom no-repeat scroll;}
/*GREEN*/
.widget_green{ background: url(css/images/grunged_widget_green.png) 0 top no-repeat scroll; }
.widget_green-bottom{background: url(css/images/grunged_widget_green.png) 0 bottom no-repeat scroll;}
/*RED*/
.widget_red{background: url(css/images/grunged_widget_red.png) 0 top no-repeat scroll;}
.widget_red-bottom{background: url(css/images/grunged_widget_red.png) 0 bottom no-repeat scroll;}
/*BLUE*/
.widget_blue{background: url(css/images/grunged_widget_blue.png) 0 top no-repeat scroll;}
.widget_blue-bottom{background: url(css/images/grunged_widget_blue.png) 0 bottom no-repeat scroll;}
/*TITLES*/
div.widget_title{
width: 180px;
height: 30px;
margin: 10px 0 0 5px;
padding: 0;
display: block;
}
div.widget_title h4{display: none;}
.administration .widget_title{background: url(css/images/grunged_widget_title.png) 0px 0px no-repeat scroll;}
.blogroll .widget_title{background: url(css/images/grunged_widget_title.png) 0px -30px no-repeat scroll;}
.calendar .widget_title{background: url(css/images/grunged_widget_title.png) 0px -60px no-repeat scroll;}
.categorylist .widget_title{background: url(css/images/grunged_widget_title.png) 0px -90px no-repeat scroll;}
.linklist .widget_title{background: url(css/images/grunged_widget_title.png) 0px -120px no-repeat scroll;}
.monthlist .widget_title{background: url(css/images/grunged_widget_title.png) 0px -150px no-repeat scroll;}
.mostcomments .widget_title{background: url(css/images/grunged_widget_title.png) 0px -180px no-repeat scroll;}
.newsletter .widget_title{background: url(css/images/grunged_widget_title.png) 0px -210px no-repeat scroll;}
.pagelist .widget_title{background: url(css/images/grunged_widget_title.png) 0px -240px no-repeat scroll;}
.recentcomments .widget_title{background: url(css/images/grunged_widget_title.png) 0px -270px no-repeat scroll;}
.recentposts .widget_title{background: url(css/images/grunged_widget_title.png) 0px -300px no-repeat scroll;}
.search .widget_title{background: url(css/images/grunged_widget_title.png) 0px -330px no-repeat scroll;}
.tagcloud .widget_title{background: url(css/images/grunged_widget_title.png) 0px -360px no-repeat scroll;}
.twitter .widget_title{background: url(css/images/grunged_widget_title.png) 0px -390px no-repeat scroll;}
&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=G0A_piGV05Y:2APOrK6dRz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=G0A_piGV05Y:2APOrK6dRz8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=G0A_piGV05Y:2APOrK6dRz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=G0A_piGV05Y:2APOrK6dRz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=G0A_piGV05Y:2APOrK6dRz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=G0A_piGV05Y:2APOrK6dRz8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=G0A_piGV05Y:2APOrK6dRz8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=G0A_piGV05Y:2APOrK6dRz8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=G0A_piGV05Y:2APOrK6dRz8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/michaeljbaird/~4/G0A_piGV05Y" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/michaeljbaird/~3/G0A_piGV05Y/post.aspx</link>
      <author>mike.nospam@nospam.michaeljbaird.com (mbaird)</author>
      <comments>http://www.michaeljbaird.com/post/2008/09/17/BlogEnginenet-Custom-Widget-Properties.aspx#comment</comments>
      <guid isPermaLink="false">http://www.michaeljbaird.com/post.aspx?id=ea0aa1e4-f035-4bec-a88b-2deb7fdb2221</guid>
      <pubDate>Wed, 17 Sep 2008 09:42:00 -0600</pubDate>
      <category>BlogEngine.net</category>
      <dc:publisher>mbaird</dc:publisher>
      <pingback:server>http://www.michaeljbaird.com/pingback.axd</pingback:server>
      <pingback:target>http://www.michaeljbaird.com/post.aspx?id=ea0aa1e4-f035-4bec-a88b-2deb7fdb2221</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://www.michaeljbaird.com/trackback.axd?id=ea0aa1e4-f035-4bec-a88b-2deb7fdb2221</trackback:ping>
      <wfw:comment>http://www.michaeljbaird.com/post/2008/09/17/BlogEnginenet-Custom-Widget-Properties.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.michaeljbaird.com/syndication.axd?post=ea0aa1e4-f035-4bec-a88b-2deb7fdb2221</wfw:commentRss>
    <feedburner:origLink>http://www.michaeljbaird.com/post.aspx?id=ea0aa1e4-f035-4bec-a88b-2deb7fdb2221</feedburner:origLink></item>
    <item>
      <title>MichaelJBaird.com and BlogEngine.net</title>
      <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eHv35fXixVxNmViVjCYWFvlZF94/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHv35fXixVxNmViVjCYWFvlZF94/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eHv35fXixVxNmViVjCYWFvlZF94/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHv35fXixVxNmViVjCYWFvlZF94/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;
Well I finally got my website up and running. After a couple of years using &lt;a href="http://www.joomla.org" target="_blank" title="Joomla.org"&gt;Joomla&lt;/a&gt; and a Apache/MySQL environment, I switched to ASP.NET, &lt;a href="http://www.vistadb.net" target="_blank" title="VistaDB Express"&gt;VistaDB Express&lt;/a&gt;, C# using the .NET open source application &lt;a href="http://www.dotnetblogengine.net" target="_blank" title="www.dotnetblogengine.net"&gt;BlogEngine.net&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;

&lt;p style="text-align: center"&gt;
&lt;a href="http://www.dotnetblogengine.net" target="_blank" title="dotnetblogengine.net"&gt;&lt;img src="http://www.michaeljbaird.com/image.axd?picture=2008%2f9%2fBlogEngine_net.png" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;
As a developer, I was happy to learn that BlogEngine.net was completely open source so I could modify the code to suit my needs for my site. Also, it is very easy to either implement an existing blog theme or make your own, which is what I did with my site. I&amp;rsquo;ve looked at quite a lot of .Net blog software including some expensive paid versions and I have to say &lt;a href="http://www.dotnetblogengine.net/" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.dotnetblogengine.net');"&gt;BlogEngine.Net&lt;/a&gt;
is the best and easiest to set up that I have seen so far. If you are looking
for a .NET based blog solution, I would highly recommend it.&lt;br /&gt;
&lt;br /&gt;
I will be providing my experiences and knowledge with BlogEngine.net and as well with other things in the future.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=KlR5PgYBFqk:L4BsZrsP1_c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=KlR5PgYBFqk:L4BsZrsP1_c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=KlR5PgYBFqk:L4BsZrsP1_c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=KlR5PgYBFqk:L4BsZrsP1_c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=KlR5PgYBFqk:L4BsZrsP1_c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=KlR5PgYBFqk:L4BsZrsP1_c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=KlR5PgYBFqk:L4BsZrsP1_c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/michaeljbaird?a=KlR5PgYBFqk:L4BsZrsP1_c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/michaeljbaird?i=KlR5PgYBFqk:L4BsZrsP1_c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/michaeljbaird/~4/KlR5PgYBFqk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/michaeljbaird/~3/KlR5PgYBFqk/post.aspx</link>
      <author>mike.nospam@nospam.michaeljbaird.com (mbaird)</author>
      <comments>http://www.michaeljbaird.com/post/2008/09/05/MichaelJBairdcom-and-BlogEnginenet.aspx#comment</comments>
      <guid isPermaLink="false">http://www.michaeljbaird.com/post.aspx?id=1041e90f-6d05-4891-aed0-189ff244cd56</guid>
      <pubDate>Fri, 05 Sep 2008 20:07:00 -0600</pubDate>
      <category>BlogEngine.net</category>
      <category>Web Design</category>
      <dc:publisher>mbaird</dc:publisher>
      <pingback:server>http://www.michaeljbaird.com/pingback.axd</pingback:server>
      <pingback:target>http://www.michaeljbaird.com/post.aspx?id=1041e90f-6d05-4891-aed0-189ff244cd56</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://www.michaeljbaird.com/trackback.axd?id=1041e90f-6d05-4891-aed0-189ff244cd56</trackback:ping>
      <wfw:comment>http://www.michaeljbaird.com/post/2008/09/05/MichaelJBairdcom-and-BlogEnginenet.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.michaeljbaird.com/syndication.axd?post=1041e90f-6d05-4891-aed0-189ff244cd56</wfw:commentRss>
    <feedburner:origLink>http://www.michaeljbaird.com/post.aspx?id=1041e90f-6d05-4891-aed0-189ff244cd56</feedburner:origLink></item>
  </channel>
</rss>
