<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Application Development</title>
        <link>http://geekswithblogs.net/rajeshpillai/category/10974.aspx</link>
        <description>Learn by building an application.</description>
        <language>en-US</language>
        <copyright>Rajesh Pillai</copyright>
        <managingEditor>thinkrajesh@yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>30 Steps to Master ASP.NET MVC Application development</title>
            <link>http://geekswithblogs.net/rajeshpillai/archive/2010/06/10/30-steps-to-master-aspnet-mvc.aspx</link>
            <description>&lt;p class="MsoNormal"&gt;Welcome Readers!,&lt;/p&gt;
&lt;p class="MsoNormal"&gt; I am starting out a new series on ASP.NET  MVC skill building which will be posted over the next couple of weeks.  Let me know your thoughts on the content, which I have planned and a couple of them has been taken from ASP.NET MVC2 Cookbook. (NOTE: Only the heading has been taken, the content will be not :)).   Do let me know what you would like to see, or any additional inputs or ideas to cover in this topics.  The 30 steps are oultined below for quick reference.  Will start filling this out quickly.&lt;/p&gt;
&lt;p class="MsoNormal"&gt; &lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Outlined is the ‘30’ step to master ASP.NET MVC.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="1"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;A Peek Into Model&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;What is a model?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Different types of model&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Presentation/ViewModel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Model Mapping (AutoMapper)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="2"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;A Peak into View&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;How view works in ASP.NET MVC?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;View Engine Design&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Custom View Engine&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;View Best Practices&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Templated Helpers&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Partial Views&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="3"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;A Peak into Controller&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Controller Design&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Controller Best Practices&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Asynchronous Controller&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Custom Action Result&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Action Filters&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Controller Factory to use with IOC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="4"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Routes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Routes from the database&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Routes from XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;More complex routing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="5"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Master Pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Basics&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Setting Master Page Dynamically&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="6"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Working with data in the view&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Repeating Views &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Array of check boxes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Array of radio buttons&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Paged data&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CRUD&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Client side action&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Confirmation Dialog (modal window)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;jqGrid &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="7"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Working with Forms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="8"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Validation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Model Validation with DataAnnotations&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Using the xVal validation framework&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Client side validation with jQuery Validation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Fluent Validation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Model Binders&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="9"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Templating&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Create strongly typed helper using T4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Custom View Templates with T4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Create custom MVC project template using T4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="10"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;IOC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;AutoFac&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Ninject&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Unity Application&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="11"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Areas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="12"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;jQuery, &lt;st1:city w:st="on"&gt;&lt;st1:place w:st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt;      and jQuery Plugins&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="13"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;State Maintenance&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;st1:place w:st="on"&gt;&lt;st1:placename w:st="on"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Application&lt;/span&gt;&lt;/st1:placename&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;st1:placetype w:st="on"&gt;State&lt;/st1:placetype&gt;&lt;/span&gt;&lt;/st1:place&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;User state&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Cookies&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Webfarm&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="14"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Error Handling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;View error handling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Controller error handling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ELMAH (Error Logging Modules and Handlers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="15"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Authentication and Authorization&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;User Registration form&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;SignOn Process&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Password Reminder&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Membership and Roles&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Windows authentication&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Restricting access to all pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Restricting access to selected pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Restricting access to pages by role&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Restricting access to a controller&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Restricting access to selected area&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="16"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Profiles and Themes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Using Profiles&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Inheriting a Profile&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Migrating an anonymous profile&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Creating custom themes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Using themes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;User personalized themes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="17"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Adding custom application settings in web.config&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Displaying custom error messages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Accessing other web.config configuration elements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Adding custom configuration elements to web.config&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Encrypting web.config sections&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="18"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Tracing, Debugging and Logging&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="19"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching a whole page&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching pages based on route details&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching pages based on browser type and version&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching pages based custom strings&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching partial pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Caching application data&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object Caching&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Using Microsoft Velocity&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Using MemCache&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Using AppFabric cache&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="20"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Localization&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="21"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;HTTP Handlers and Modules&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="22"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;XSS/CSRF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;AnitForgery&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Encoding&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="23"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;HtmlHelpers&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
    &lt;ol type="a" style="margin-top: 0in;" start="1"&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Strongly typed helpers&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
        &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Writing custom helpers&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="24"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Repository Pattern (Data access)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="25"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;WF/WCF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal" style="margin-left: 0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="26"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Unit Testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="27"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Mocking Framework&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="28"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Integration Testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="29"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Load / Performance Testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol type="1" style="margin-top: 0in;" start="30"&gt;
    &lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Deployment&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; Once again let me know your thoughts on this.&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt; &lt;/p&gt;
&lt;p class="MsoNormal"&gt;  Till then&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;, Enjoy MVC'ing!!!&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt; &lt;img src="http://geekswithblogs.net/rajeshpillai/aggbug/140329.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rajesh Pillai</dc:creator>
            <guid>http://geekswithblogs.net/rajeshpillai/archive/2010/06/10/30-steps-to-master-aspnet-mvc.aspx</guid>
            <pubDate>Thu, 10 Jun 2010 11:19:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rajeshpillai/comments/140329.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rajeshpillai/archive/2010/06/10/30-steps-to-master-aspnet-mvc.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rajeshpillai/comments/commentRss/140329.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rajeshpillai/services/trackbacks/140329.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET MVC Application In Action - I (DailyJournal)</title>
            <link>http://geekswithblogs.net/rajeshpillai/archive/2010/05/21/mvcinaction.aspx</link>
            <description>&lt;p&gt;Its been long due I was planning to write an article on creating some useful ASP.NET MVC application. I have code named it "DailyJournal". Its a simple application which allows creation of multiple activities and assign tasks to these activities. Its' kind of "Yet another Task/Todo application". &lt;br /&gt;
&lt;br /&gt;
The credentials which you can use with the attached demo application is shown below. &lt;br /&gt;
&lt;br /&gt;
 &lt;/p&gt;
&lt;div id="premain0" class="small-text" style="width: 100%"&gt;&lt;img id="preimg0" src="http://www.codeproject.com/images/minus.gif" width="9" height="9" preid="0" style="cursor: pointer" alt="" /&gt;&lt;span id="precollapse0" preid="0" style="margin-bottom: 0px; cursor: pointer"&gt; Collapse&lt;/span&gt;&lt;img src="http://www.codeproject.com/images/copy_16.png" width="16" height="16" style="margin-left: 35px" alt="" /&gt;&lt;a href="#" preid="0"&gt; Copy Code&lt;/a&gt;&lt;/div&gt;
&lt;pre id="pre0" style="margin-top: 0px"&gt;
User Name : admin 
Password   : admin123
&lt;/pre&gt;
&lt;h2&gt;&lt;a id="heading0001" name="heading0001"&gt;Framework/Libraries Used&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
    &lt;li&gt;ASP.NET MVC&lt;/li&gt;
    &lt;li&gt;jQuery + jQuery UI (for ajax and UI)&lt;/li&gt;
    &lt;li&gt;ELMAH for Error logging&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a id="heading0002" name="heading0002"&gt;Warning Ahead&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is just a rough draft and so I am putting down some of the known limitation. &lt;br /&gt;
Some points of warning before we move further with this application. This is just an early prototype. As such many of the design principles have been ignored. But, I try to cover that up in the next update once I get my head around this.&lt;/p&gt;
&lt;p&gt;The application in its current state supports the following features&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create users&lt;/li&gt;
    &lt;li&gt;Assign Activities to users&lt;/li&gt;
    &lt;li&gt;Assign tasks to activities&lt;/li&gt;
    &lt;li&gt;Assign a status to a task&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The user creation/authentication is being done by the default Membership provider. Most of the activities are highly visual i.e. you can drag-drop task to different areas, in-place edition of task details and so on.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The following are the current issues with the design which I promise to refactor in the second version.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;No Validations&lt;/li&gt;
    &lt;li&gt;Fat Controller&lt;/li&gt;
    &lt;li&gt;XSS/CSS vulnerable&lt;/li&gt;
    &lt;li&gt;No Service model/abstraction yet. For the demo LINQ to SQL is implemented.&lt;/li&gt;
    &lt;li&gt;No separation of layers&lt;/li&gt;
    &lt;li&gt;UI Design&lt;/li&gt;
    &lt;li&gt;et el...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is just an extract.  For source code and more information proceed to&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/mvcinaction.aspx"&gt;http://www.codeproject.com/KB/aspnet/mvcinaction.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hope you like this!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/rajeshpillai/aggbug/139983.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rajesh Pillai</dc:creator>
            <guid>http://geekswithblogs.net/rajeshpillai/archive/2010/05/21/mvcinaction.aspx</guid>
            <pubDate>Fri, 21 May 2010 02:27:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rajeshpillai/comments/139983.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rajeshpillai/archive/2010/05/21/mvcinaction.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rajeshpillai/comments/commentRss/139983.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rajeshpillai/services/trackbacks/139983.aspx</trackback:ping>
        </item>
        <item>
            <title>Lets build a simple blog engine - Prototype for Public Site [eboard]  - 3</title>
            <link>http://geekswithblogs.net/rajeshpillai/archive/2009/11/28/eboard3.aspx</link>
            <description>&lt;h2&gt;Prototype&lt;/h2&gt;
&lt;p&gt;This time we will have a basic prototype ready for the public website.  The design will be kept simple so that we &lt;br /&gt;
could concentrate on the main task at hand.  Later on we will enable theming,so that the user could customize the &lt;br /&gt;
blog to their heart's content.&lt;/p&gt;
&lt;p&gt;The landing page looks like in the figure below.&lt;/p&gt;
&lt;p&gt;&lt;img width="600" height="491" alt="" src="/images/geekswithblogs_net/rajeshpillai/proto_0.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Create a "Blog" folder under the "Views" folder in the website.  Add an aspx and copy the below markup and name it "List.aspx".  &lt;/p&gt;
&lt;pre&gt;&lt;p&gt;&amp;lt;%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage&amp;lt;IEnumerable&amp;lt;Eboard.Model.Blog&amp;gt;&amp;gt;" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"&amp;gt;&lt;br /&gt;    List&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"&amp;gt;&lt;br /&gt;    &amp;lt;h2&amp;gt;You have &amp;lt;%= Model.Count() %&amp;gt; blogs created.&amp;lt;/h2&amp;gt;&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;Title&amp;lt;/th&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;Created On&amp;lt;/th&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;% foreach (var item in Model) { %&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&lt;br /&gt;                &amp;lt;%= Html.ActionLink("Edit", "Edit", new {  id=item.Id  }) %&amp;gt; |&lt;br /&gt;                &amp;lt;%= Html.ActionLink("Show", "Show", new {  id=item.Id  })%&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&lt;br /&gt;                &amp;lt;%= Html.Encode(item.Title) %&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&lt;br /&gt;                &amp;lt;%= Html.Encode(String.Format("{0:g}", item.CreatedOn)) %&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;% } %&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;p&amp;gt;&lt;br /&gt;        &amp;lt;%= Html.ActionLink("Create New", "Create") %&amp;gt;&lt;br /&gt;    &amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;Create a "BlogController.cs" in the "Controller" folder and copy the following code.&lt;/p&gt;
&lt;p&gt; public ActionResult List()&lt;br /&gt;
 {&lt;br /&gt;
      ViewData["Message"] = "Welcome to Ebaord.  The minimalistic blogging engine!";&lt;br /&gt;
      return View();  // by default this returns a view with the name "List"&lt;br /&gt;
 }&lt;/p&gt;
&lt;p&gt;The above is just the boiler plate code just for reference.  The actual method will be implemented once we build our&lt;br /&gt;
repository and service layer.&lt;br /&gt;
&lt;br /&gt;
When the user click on the "Show" link the user will be taken to the home page of that blog.&lt;/p&gt;
&lt;p&gt;&lt;img width="650" height="532" alt="" src="/images/geekswithblogs_net/rajeshpillai/proto_1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
The final product may vary a bit as we go along. See you soon.  Happy prototyping....&lt;/p&gt; &lt;img src="http://geekswithblogs.net/rajeshpillai/aggbug/136570.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rajesh Pillai</dc:creator>
            <guid>http://geekswithblogs.net/rajeshpillai/archive/2009/11/28/eboard3.aspx</guid>
            <pubDate>Fri, 27 Nov 2009 18:55:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rajeshpillai/comments/136570.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rajeshpillai/archive/2009/11/28/eboard3.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rajeshpillai/comments/commentRss/136570.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rajeshpillai/services/trackbacks/136570.aspx</trackback:ping>
        </item>
        <item>
            <title>Lets build a simple blog engine [eboard] - 2</title>
            <link>http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/blogengine2.aspx.aspx</link>
            <description>&lt;p&gt;Welcome to the 2nd series of building a blog engine.  In the first part we have laid out the foundation for this application and modeled the DB  structure for quick mockup.&lt;/p&gt;
&lt;p&gt;You can read the first part here &lt;a href="http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/lets-build-a-simple-blog-engine-eboard---1.aspx"&gt;lets-build-a-simple-blog-engine-eboard---1.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One thing I missed to mentioned in the first part is the we will be using the excellent ELMAH for error logging.  This is a pretty cool module which hooks up to the system &lt;br /&gt;
and logs all exceptions without writing a single line of code.&lt;/p&gt;
&lt;p&gt;You can read more about ELMAH at &lt;a href="http://code.google.com/p/elmah/"&gt;code.google.com/p/elmah/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What we will be doing is creating the public facing website first rather than creating the administration screens.  We will decide upon the themes to use and mockup a &lt;br /&gt;
quick prototype for the public view.&lt;/p&gt;
&lt;p&gt;The following the is the project structure I came up with.  This is just skeleton and the meat will be added incrementally over next couple of weeks.&lt;/p&gt;
&lt;h3&gt;Project Structure &lt;/h3&gt;
&lt;p&gt;&lt;img width="702" height="601" src="/images/geekswithblogs_net/rajeshpillai/folder_structure_1.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I have divided the project according to the responsibility of each component.  As you can see we will be using the LinqToSql along with the Repository pattern for &lt;br /&gt;
data access.  This will provide us with the flexibility to switch data provider at will and also provides the principle of OCP (Open for Extension and Closed for Modification).&lt;/p&gt;
&lt;p&gt;I prefer to keep the model in a separate project rather than keeping it along with the web project.  For this project the controllers wil be lying in the default "Controllers" folder.&lt;/p&gt;
&lt;p&gt;We will also change the layout of the "Content" folder.  The content folder is where all your css are kept.  We will take a different approach possibly to enable easy theming &lt;br /&gt;
of our blogs.&lt;/p&gt;
&lt;p&gt;Watch for the next post, where we will be mocking up the public site for the blog.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt; &lt;img src="http://geekswithblogs.net/rajeshpillai/aggbug/136559.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rajesh Pillai</dc:creator>
            <guid>http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/blogengine2.aspx.aspx</guid>
            <pubDate>Thu, 26 Nov 2009 20:17:50 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rajeshpillai/comments/136559.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/blogengine2.aspx.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rajeshpillai/comments/commentRss/136559.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rajeshpillai/services/trackbacks/136559.aspx</trackback:ping>
        </item>
        <item>
            <title>Lets build a simple blog engine [eboard] - 1</title>
            <link>http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/eboard1.aspx</link>
            <description>&lt;h2&gt;Welcome to eBoard&lt;/h2&gt;
&lt;p&gt;Hello and welcome to this series of application development using asp.net mvc, jquery, automapper, ninject.  Though the world doesn't need another blog engine, but sometimes reinventing the &lt;br /&gt;
wheel teaches you many unknown things and it's the learning experinece that counts more than anything else.&lt;/p&gt;
&lt;p&gt;I have been using asp.net mvc + jquery for about a year now.  So, it's time to put down something which will help the beginner with this technologies get a good graps of the fundamentals skill required &lt;br /&gt;
to do web development. &lt;/p&gt;
&lt;p&gt;The side effect of this is we will also learn about some design principles, best practices and troubleshooting will add icing to the cake.&lt;/p&gt;
&lt;p&gt;Without further ado, lets begin.  Let's first lay down the basic business requirement for the blog engine.  This may be simple in form, but will help us keep an eye on the actual requirement and prevent &lt;br /&gt;
us from deviating from the main goal.&lt;/p&gt;
&lt;p&gt;The blog engine will be named as "eboard".&lt;/p&gt;
&lt;h3&gt;Requirements&lt;/h3&gt;
&lt;ol&gt;
    &lt;li&gt;Multi blog support : The user should be able to create multiple blogs.&lt;/li&gt;
    &lt;li&gt;Make posts&lt;/li&gt;
    &lt;li&gt;Assign a category to the post&lt;/li&gt;
    &lt;li&gt;Assing one or more tags to the post&lt;/li&gt;
    &lt;li&gt;Allow readers to post comment&lt;/li&gt;
    &lt;li&gt;Comment Moderation&lt;/li&gt;
    &lt;li&gt;Simple Blog Settings like theme selection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Apart from creating a working blog engine the following are educational/learning benefit the reader may derive from this experience&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Learn asp.net mvc and jquery&lt;/li&gt;
    &lt;li&gt;Learn to design/extend a validation framework&lt;/li&gt;
    &lt;li&gt;Learn about Repository pattern&lt;/li&gt;
    &lt;li&gt;Learn dependency injection using Ninject.&lt;/li&gt;
    &lt;li&gt;Service design&lt;/li&gt;
    &lt;li&gt;Design for testability (though we won't be writing test at this point in time).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With the above requirements in mind lets move ahead a take a shot at creating the database for our blog.   Some of the reader may frown at this idea.  Designing the database first or the model first is akin to &lt;br /&gt;
the chicken and the hen problem.  But for this small application I think the database design will closely mimic the model as well.  Please free to shout at me if you feel anything is terribly wrong here.&lt;/p&gt;
&lt;p&gt;The initial DB model looks like the figure shown below.&lt;br /&gt;
 &lt;/p&gt;
&lt;h3&gt;DB Model&lt;/h3&gt;
&lt;p&gt;&lt;img width="700" height="468" alt="" src="/images/geekswithblogs_net/rajeshpillai/db_1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;We are using the membership provider for users and roles. The above DB model gives us a good start in designing our blog.  It has all the essential elements to support the business &lt;br /&gt;
requirement that we have laid out for "eboard".&lt;/p&gt;
&lt;p&gt;The below table highlights the essential details about the above model.&lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" border="1" style="width: 829px; height: 168px;"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;BlogSettings&lt;/td&gt;
            &lt;td&gt;This stores the essential settings related to blog.  Curently it has only the name of the theme and comment moderation flag.  This can be extended as required.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Blog&lt;/td&gt;
            &lt;td&gt;This allows us to have multiple blog created.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Post&lt;/td&gt;
            &lt;td&gt;The posts that goes with the blog.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Comment&lt;/td&gt;
            &lt;td&gt;The comments that goes with the post.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Category&lt;/td&gt;
            &lt;td&gt;A post can belong to only one category.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Tags&lt;/td&gt;
            &lt;td&gt;A post can hve multiple tag.  Tags are useful for search.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That's it for this episode.  In the next episode we will layout the folder structure for the "eboard" application.  Till then happy learning and enjoy blogging.&lt;/p&gt;
&lt;p&gt;&lt;a style="display: none;" rel="tag" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid= 48141"&gt;CodeProject&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/rajeshpillai/aggbug/136557.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rajesh Pillai</dc:creator>
            <guid>http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/eboard1.aspx</guid>
            <pubDate>Thu, 26 Nov 2009 18:47:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rajeshpillai/comments/136557.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rajeshpillai/archive/2009/11/27/eboard1.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rajeshpillai/comments/commentRss/136557.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rajeshpillai/services/trackbacks/136557.aspx</trackback:ping>
        </item>
    </channel>
</rss>
