<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Brad Abrams  : ASPMVC</title><link>http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx</link><description>Tags: ASPMVC</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Business Apps Example for Silverlight 3 RTM and .NET RIA Services July Update: Part 15: ASP.NET MVC</title><link>http://blogs.msdn.com/brada/archive/2009/07/30/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-xx-asp-net-mvc.aspx</link><pubDate>Thu, 30 Jul 2009 19:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9847077</guid><dc:creator>BradA</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/brada/comments/9847077.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=9847077</wfw:commentRss><description>&lt;P&gt;Continuing in our discussion of Silverlight 3 and the update to .NET RIA Services.&amp;nbsp; I have been updating&amp;nbsp; the example from my &lt;A href="http://visitmix.com/" mce_href="http://visitmix.com/"&gt;Mix09&lt;/A&gt; talk &lt;A href="http://blogs.msdn.com/brada/archive/2009/03/17/mix09-building-amazing-business-applications-with-silverlight-3.aspx" mce_href="http://blogs.msdn.com/brada/archive/2009/03/17/mix09-building-amazing-business-applications-with-silverlight-3.aspx"&gt;“building business applications with Silverlight 3&lt;/A&gt;”.&amp;nbsp; I customer recently asked about using ASP.NET MVC and Silverlight with RIA Services.&amp;nbsp; There specific scenario was an application with the complex admin interface in Silverlight but using ASP.NET MVC for the consumer facing part of the web to get the maximum reach.&amp;nbsp; The customer wanted to share as much of their application logic as possible.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So, to address this, i thought I’d update my Mix 09 demo to have an ASP.NET MVC view as well as a silverlight view.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;You can watch the original&amp;nbsp; &lt;A href="http://sessions.visitmix.com/MIX09/T40F" mce_href="http://sessions.visitmix.com/MIX09/T40F"&gt;video of the full session&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You can see the &lt;A href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;full series here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The demo requires (all 100% free and always free):&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/express/download/" mce_href="http://www.microsoft.com/express/download/"&gt;VS2008 SP1&lt;/A&gt; (Which includes &lt;A href="http://www.microsoft.com/express/sql/Default.aspx" mce_href="http://www.microsoft.com/express/sql/Default.aspx"&gt;Sql Express 2008&lt;/A&gt;) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://silverlight.net/getstarted/silverlight3/default.aspx" mce_href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;Silverlight 3 RTM&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://code.msdn.microsoft.com/RiaServices" mce_href="http://code.msdn.microsoft.com/RiaServices"&gt;.NET RIA Services July '09 Preview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.asp.net/mvc/" mce_href="http://www.asp.net/mvc/"&gt;ASP.NET MVC 1.0&lt;/A&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Also, &lt;A href="http://brad_abrams.members.winisp.net/Projects/Silverlight3RTM/MyApp.aspmvc.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/Silverlight3RTM/MyApp.aspmvc.zip"&gt;download the full demo files&lt;/A&gt; and check out the &lt;A href="http://www.hanselman.com/abrams/" mce_href="http://www.hanselman.com/abrams/"&gt;running application&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;The architecture we are going to look at today us focused on building the ASP.NET MVC head on the RIA Servces based app logic.&amp;nbsp; As you will see this is easy to do and shares all the great UI validation support. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb.png" width=387 height=268 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;To start with I took the original application and deleted the MyApp.Web project and added a new project that is ASP.NET MVC based.&amp;nbsp; You could have just as easily added another web project to the same solution.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_2.png" width=240 height=154 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Then I associated the Silverlight application with this web project.&amp;nbsp; Be sure to turn on the RIA Services link as well.&amp;nbsp; This is what controls the codegen to the Silverlight client. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_3.png" width=240 height=157 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Then i copied over the Authentication related DomainServices from the web project.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Then i added my northwind.mdf file to App_Data, built my Entity Framework model and finally added my domain service and updated it exactly the way did in Part 2.&amp;nbsp; The one tweak we need to do is make each of the methods in the DomainService virtual.. this has no real effect on the silverlight client, but it allows up to build a proxy for the MVC client.&amp;nbsp; &lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;[EnableClientAccess]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; SuperEmployeeDomainService : LinqToEntitiesDomainService&amp;lt;NORTHWNDEntities&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;{&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;virtual&lt;/SPAN&gt; IQueryable&amp;lt;SuperEmployee&amp;gt; GetSuperEmployees()&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.Context.SuperEmployeeSet;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; Submit(ChangeSet changeSet)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        &lt;SPAN style="COLOR: #0000ff"&gt;base&lt;/SPAN&gt;.Submit(changeSet);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;virtual&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; UpdateSuperEmployee(SuperEmployee currentSuperEmployee)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.Context.AttachAsModified(currentSuperEmployee, &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;                                      ChangeSet.GetOriginal(currentSuperEmployee));            &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Running the MyAppTestPage.aspx should show that we have the same Silverlight app up and running..&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_4.png" width=373 height=295 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;We can now focus on the ASP.NET MVC part of this.&lt;/P&gt;
&lt;P&gt;In the Controllers direction, open up HomeContollers.cs.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; [HandleError]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; HomeController : Controller&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;    SuperEmployeeDomainService domainService = &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;        DomainServiceProxy.Create&amp;lt;SuperEmployeeDomainService&amp;gt;();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Line 5 calls a factory method that creates a DomainService wrapper.. this allows you to have a clean, direct calling syntax for the DomainService, but allows the system to run through it’s standard pipeline of validation, authorization, etc.&amp;nbsp;&amp;nbsp;&amp;nbsp; Note, with the current CTP, you will need to reference DomainServiceExtensions.dll from this sample to get this functionality.&amp;nbsp; &lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; ActionResult Index()&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;  {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;      &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; View(&lt;SPAN style="COLOR: #006080"&gt;"Index"&lt;/SPAN&gt;, domainService.GetSuperEmployees());&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;  }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Then index is very easy.. we simply pass the results of calling GetSuperEmployee() as our model.&amp;nbsp; This allows us to share any business logic that filters the results… I can write it once and share it between my Silverlight and ASP.NET MVC app.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Nothing at all remarkable about the view..&amp;nbsp; Index.aspx in the \Views directory.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &amp;lt;%@ Page Language=&lt;SPAN style="COLOR: #006080"&gt;"C#"&lt;/SPAN&gt; MasterPageFile=&lt;SPAN style="COLOR: #006080"&gt;"~/Views/Shared/Site.Master"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;  Inherits=&lt;SPAN style="COLOR: #006080"&gt;"System.Web.Mvc.ViewPage&amp;lt;IQueryable&amp;lt;MyApp.Web.Models.SuperEmployee&amp;gt;&amp;gt;"&lt;/SPAN&gt; %&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt; &amp;lt;asp:Content ID=&lt;SPAN style="COLOR: #006080"&gt;"indexTitle"&lt;/SPAN&gt; ContentPlaceHolderID=&lt;SPAN style="COLOR: #006080"&gt;"TitleContent"&lt;/SPAN&gt; runat=&lt;SPAN style="COLOR: #006080"&gt;"server"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;     Home Page&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt; &amp;lt;/asp:Content&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt; &amp;lt;asp:Content ID=&lt;SPAN style="COLOR: #006080"&gt;"indexContent"&lt;/SPAN&gt; ContentPlaceHolderID=&lt;SPAN style="COLOR: #006080"&gt;"MainContent"&lt;/SPAN&gt; runat=&lt;SPAN style="COLOR: #006080"&gt;"server"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;    &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt; &amp;lt;h2&amp;gt;List of Employees&amp;lt;/h2&amp;gt; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum11&gt;  11:&lt;/SPAN&gt; &amp;lt;ul&amp;gt; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum12&gt;  12:&lt;/SPAN&gt; &amp;lt;% &lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt; (var emp &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; Model) { %&amp;gt; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum13&gt;  13:&lt;/SPAN&gt;  &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum14&gt;  14:&lt;/SPAN&gt; &amp;lt;li&amp;gt;                  &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum15&gt;  15:&lt;/SPAN&gt;     &amp;lt;%=Html.ActionLink(emp.Name, &lt;SPAN style="COLOR: #006080"&gt;"Details"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; { id = emp.EmployeeID })%&amp;gt;          &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum16&gt;  16:&lt;/SPAN&gt;     Origin: &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum17&gt;  17:&lt;/SPAN&gt;     &amp;lt;%=Html.Encode(emp.Origin)%&amp;gt;    &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum18&gt;  18:&lt;/SPAN&gt; &amp;lt;/li&amp;gt; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum19&gt;  19:&lt;/SPAN&gt; &amp;lt;% } %&amp;gt; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum20&gt;  20:&lt;/SPAN&gt;     &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum21&gt;  21:&lt;/SPAN&gt; &amp;lt;/ul&amp;gt; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum22&gt;  22:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum23&gt;  23:&lt;/SPAN&gt; &amp;lt;/asp:Content&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;In line two, we set up the Model type to be IQueryable&amp;lt;SuperEmployee&amp;gt;… notice this is exactly what my DomainService returned. &lt;/P&gt;
&lt;P&gt;The in lines 15-18 I get strongly typed access to each SuperEmployee.&lt;/P&gt;
&lt;P&gt;Here is how it looks:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_12.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_5.png" width=346 height=274 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Next, let’s look at the controller action for the Details view..&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; ActionResult Details(&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; id)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;     var q = domainService.GetSuperEmployees();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;     var emp = q.Where(e=&amp;gt;e.EmployeeID==id).FirstOrDefault();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; View(emp);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Again, very simple, here we do a Linq query over the results of calling our business logic.&amp;nbsp; The cool thing about the composition of Linq is that this where clause passes from here, to the DomainSerivce, to the Entity Framework model and all the way to the database where it is executed as efficient tsql.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The Details.aspx view is just as simple as the view above, basically just accessing the model.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_14.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_6.png" width=326 height=254 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ok – so the read case is easy, what about update?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Let’s look at the Edit action in the controller..&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; ActionResult Edit(&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; id)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;     var q = domainService.GetSuperEmployees();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;     var emp = q.Where(e =&amp;gt; e.EmployeeID == id).FirstOrDefault();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; View(emp);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Again, very similar to the Details action we saw.. this simply populates the fields.&lt;/P&gt;
&lt;P&gt;Now let’s take a look at edit.aspx view for this action. We need a simple data entry form.. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_16.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_7.png" width=151 height=240 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_7.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;First, we add a Validation summary at the top of the form.&amp;nbsp; This is where we will display all the validation issues for the page.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &amp;lt;%= Html.ValidationSummary(&lt;SPAN style="COLOR: #006080"&gt;"Edit was unsuccessful. Please correct the errors and try again."&lt;/SPAN&gt;) %&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Next, we include some standard HTML for each field we need filled out:&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &amp;lt;p&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;     &amp;lt;label &lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"Name"&lt;/SPAN&gt;&amp;gt;Name:&amp;lt;/label&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;     &amp;lt;%= Html.TextBox(&lt;SPAN style="COLOR: #006080"&gt;"Name"&lt;/SPAN&gt;, Model.Name) %&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;     &amp;lt;%= Html.ValidationMessage(&lt;SPAN style="COLOR: #006080"&gt;"Name"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #006080"&gt;"*"&lt;/SPAN&gt;) %&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt; /p&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt; &amp;lt;p&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;     &amp;lt;label &lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"Name"&lt;/SPAN&gt;&amp;gt;Gender:&amp;lt;/label&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt;     &amp;lt;%= Html.TextBox(&lt;SPAN style="COLOR: #006080"&gt;"Gender"&lt;/SPAN&gt;, Model.Gender) %&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;     &amp;lt;%= Html.ValidationMessage(&lt;SPAN style="COLOR: #006080"&gt;"Gender"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #006080"&gt;"*"&lt;/SPAN&gt;)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt; &amp;lt;/p&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Notice in line 4 and line 9 we are adding validation hooks… &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_18.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_18.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_8.png" width=199 height=240 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_8.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;If there are any fields in the type that we don’t want to display, we still need to include them here so they will be in the postback data…&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;p&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"EmployeeID"&lt;/SPAN&gt;, Model.EmployeeID)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;/p&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;The other thing we want in postback data the set of unedited “original” data.. this is so that we can do concurrency checks with the database.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.EmployeeID"&lt;/SPAN&gt;, Model.EmployeeID)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.Gender"&lt;/SPAN&gt;, Model.Gender)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.Issues"&lt;/SPAN&gt;, Model.Issues)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.LastEdit"&lt;/SPAN&gt;, Model.LastEdit)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.Name"&lt;/SPAN&gt;, Model.Name)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.Origin"&lt;/SPAN&gt;, Model.Origin)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.Publishers"&lt;/SPAN&gt;, Model.Publishers)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;lt;%= Html.Hidden(&lt;SPAN style="COLOR: #006080"&gt;"orginal.Sites"&lt;/SPAN&gt;, Model.Sites)%&amp;gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Notice here the naming convention of original.blahh.. as you will see later, this matches the name of the argument on the controller action.&amp;nbsp; Let’s flip back to the controller action and take a look..&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; [AcceptVerbs(HttpVerbs.Post)]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; ActionResult Edit(SuperEmployee emp, SuperEmployee orginal)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (ModelState.IsValid)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;         domainService.AssociateOriginal(emp, orginal);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt;         domainService.UpdateSuperEmployee(emp);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; RedirectToAction(&lt;SPAN style="COLOR: #006080"&gt;"Details"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; { id = emp.EmployeeID });&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum11&gt;  11:&lt;/SPAN&gt;    &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum12&gt;  12:&lt;/SPAN&gt;    &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; View(emp);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum13&gt;  13:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum14&gt;  14:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Notice my method takes two arguments, emp, which is the current employee as it has been updated from the form and the “original” employee that is mapped back from the hidden html fields.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Then in line 7, we associate the original value with the employee… this effectively makes it so that calls in the DomainService class to ChangeSet.GetOriginal() will return the right value.&amp;nbsp; Next we call UpdateSuperEmployee() on the business logic.&amp;nbsp; Here we do all the validation defined for the model including running custom validation code. If validation fails, the error information will be shown on the form.&amp;nbsp; Otherwise the data is eventually saved to the database. &lt;/P&gt;
&lt;P&gt;What I have show is building an ASP.NET MVC application that shares the exact same application logic as my Silverlight client.&amp;nbsp; This includes things such as data validation that shows right through to the UI.&amp;nbsp;&amp;nbsp;&amp;nbsp; To bring it home, here is an example of the exact same validation error first in the Silverlight client, then in the ASP.NET MVC client…&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_20.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_20.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_9.png" width=576 height=473 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_9.png"&gt;&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_22.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_22.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_10.png" width=480 height=541 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BusinessAppsExampleforSilverlight.NETMVC_115A1/image_thumb_10.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9847077" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category><category domain="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx">RIAServices</category></item><item><title>Mix Essentials Event in South Africa in June</title><link>http://blogs.msdn.com/brada/archive/2008/05/29/heading-to-south-africa-in-late-june.aspx</link><pubDate>Thu, 29 May 2008 17:12:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8540842</guid><dc:creator>BradA</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/brada/comments/8540842.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8540842</wfw:commentRss><description>&lt;p&gt;I am very excited that &lt;a href="http://joeon.net/"&gt;Joe Stagner&lt;/a&gt; and I will be heading to South Africa the week of June 23rd.&amp;#160;&amp;#160; While &lt;a href="https://www.microsoft.com/southafrica/mixessentials/default.mspx"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="94" alt="banner_120x90" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/HeadingtoSouthAfricainLateJune_A7A6/banner_120x90_3.jpg" width="124" align="right" border="0" /&gt;&lt;/a&gt; we are there, we will have a chance to interact with the very passionate .NET community in both Johannesburg and Cape Town.&amp;#160; &lt;/p&gt;  &lt;p&gt;The &lt;a href="https://www.microsoft.com/southafrica/mixessentials/default.mspx"&gt;South Africa Mix Essentials&lt;/a&gt; is an excellent chance to have a conversation about the next generation of web and designer technologies.&amp;#160;&amp;#160; I hope you can make it! &lt;/p&gt;  &lt;p&gt;Same great content, two venues:&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Johannesburg 24 June 2008 (&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373529&amp;amp;Culture=en-ZA%20"&gt;Register&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Cape Town 26 June 2008 (&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373530&amp;amp;Culture=en-ZA"&gt;Register&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.google.com/imgres?imgurl=http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/800px-Flag_of_South_Africa.svg.png&amp;amp;imgrefurl=http://commons.wikimedia.org/wiki/Image:Flag_of_South_Africa.svg&amp;amp;h=533&amp;amp;w=800&amp;amp;sz=13&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=3lW__i5WMkh8tM:&amp;amp;tbnh=95&amp;amp;tbnw=143&amp;amp;prev=/images%3Fq%3D%2BSouth%2BAfrica%26um%3D1%26hl%3Den%26rls%3Dcom.microsoft:en-US%26sa%3DN"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I'll be giving some very cool web technology talks while I am there including:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;strong&gt;Silverlight 2&lt;/strong&gt; (beta2!) Developer overview where I will talk about our general&lt;a href="http://images.google.com/imgres?imgurl=http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/800px-Flag_of_South_Africa.svg.png&amp;amp;imgrefurl=http://commons.wikimedia.org/wiki/Image:Flag_of_South_Africa.svg&amp;amp;h=533&amp;amp;w=800&amp;amp;sz=13&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=3lW__i5WMkh8tM:&amp;amp;tbnh=95&amp;amp;tbnw=143&amp;amp;prev=/images%3Fq%3D%2BSouth%2BAfrica%26um%3D1%26hl%3Den%26rls%3Dcom.microsoft:en-US%26sa%3DN"&gt;&lt;img height="64" src="http://tbn0.google.com/images?q=tbn:3lW__i5WMkh8tM:http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/800px-Flag_of_South_Africa.svg.png" width="96" align="right" /&gt;&lt;/a&gt;al goals for Silverlight in the RIA space and walk through how to build a Silverlight application end-to-end.&amp;#160; &lt;/p&gt;    &lt;p&gt;- Building Great Web Applications with &lt;strong&gt;ASP.NET AJAX&lt;/strong&gt; where I will talk about some of the new AJAX\JavaScript advances in VS2008 and .NET Framework 3.5 SP1.&amp;#160; This will be an all-demo-no-slides sort of talk, so it will be a ton of fun!&lt;/p&gt;    &lt;p&gt;- ASP.NET Futures including &lt;strong&gt;ASP.NET Dynamic Data&lt;/strong&gt; and &lt;strong&gt;ASP.NET MVC&lt;/strong&gt;.&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;While I am there, I will also do a couple of user group events.. here is what we have locked so far:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;On June 23rd, I will be talk to &lt;a href="http://sadeveloper.net/forums/thread/12453.aspx"&gt;a local .NET users group&lt;/a&gt; in Johannesburg about Silverlight 2!&amp;#160; Thanks to &lt;a href="http://craign.net/2008/05/30/silverlight-2-with-brad-abrams/"&gt;Craig Nicholson for getting this setup&lt;/a&gt;.&amp;#160; &lt;/p&gt;    &lt;p&gt;On June 25th, I will be &lt;a href="http://sadeveloper.net/forums/12084/ShowThread.aspx"&gt;talking to a local .NET Users group&lt;/a&gt; in Cape Town about ASP.NET MVC.&amp;#160; Thanks to &lt;a href="http://hilton.giesenow.com/archive/2008/05/14/s-a-developer-net-event-june-2008-mvc-with-brad-abrams.aspx"&gt;Hilton Giesenow for getting it setup&lt;/a&gt;.&amp;#160; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I have never been to South Africa before, so any thoughts on what would be good to see while I am there?&amp;#160; See you there!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;update: added the Johannesburg event, thanks Craig!&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8540842" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>Thank you North Carolina!</title><link>http://blogs.msdn.com/brada/archive/2008/04/11/thank-you-north-carolina.aspx</link><pubDate>Sat, 12 Apr 2008 03:07:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8382947</guid><dc:creator>BradA</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/brada/comments/8382947.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8382947</wfw:commentRss><description>&lt;p&gt;I had a great trip in North Carolina&amp;#8230; In addition to a fun time with my extended family, I had a chance to take two days &amp;#8220;off&amp;#8221; vacation and visit with three Fortune 500 companies, give a Framework Design Guidelines training class to the Visual Studio North Carolina office and speak at the &lt;a href="http://www.trinug.org/"&gt;Triangle Area .NET User&amp;#8217;s&lt;/a&gt; group. &lt;/p&gt;  &lt;p&gt;Overall, I am very impressed with the .NET community in North Carolina. I found a ton of passion and interest in Silverlight 2 in both consumer facing Internet applications as well as browser clients for internal line of business applications. I was also impressed with the interest in &lt;a href="http://quickstarts.asp.net/3-5-extensions/dyndata/default.aspx"&gt;ASP.NET Dynamic Data&lt;/a&gt; (which we just did an &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/10/asp-net-dynamic-data-preview-available.aspx"&gt;updated preview of&lt;/a&gt;) and there were a few folks that were super excited about &lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;At the .NET User's group there were just over 90 people there and a I was lucky enough to have a local control vendor &lt;a href="http://www.fpoint.com/"&gt;FarPoint&lt;/a&gt;, sponsored this event in a very North Carolina way. Their team barbequed a pig! Several members of the team took the day off to prepare the BBQ, slaw, baked beans and you guessed it &amp;#8211; banana pudding! It was a great change from the normal pizza user group fair. Thanks FarPoint! (check out the &lt;a href="http://stevejackle.spaces.live.com/photos/cns!3C8556B460CCC6E1!617/"&gt;pictures&lt;/a&gt; from &lt;a href="http://jackle.com/"&gt;Steve Jackle&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;img height="148" alt="" src="http://blufiles.storage.live.com/y1pWfxBVTloVLbFPbxB3dAcQUcU_A31L3gk-itARe11YXRp-cxeOYyNYpOJZWyWwFm8RdBjRGzVfUc" width="222" /&gt;&lt;/p&gt;  &lt;p&gt;Enjoying the BBQ&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I had a great time doing the demos for the user&amp;#8217;s group meeting I covered three main areas via an all-demo-no-slides format where I coded up these apps from scratch. It was a lot of fun and the interaction with the audience was great!&lt;/p&gt;  &lt;p&gt;&lt;img height="211" alt="" src="http://blufiles.storage.live.com/y1pWfxBVTloVLbiRGF1uXh8zlQQeYmvLIrnZCCF0VksHrk3sgPzccVsuv-hHBIEDnNpKcD0TFHxaM4" width="216" /&gt;&lt;/p&gt;  &lt;p&gt;Enjoying the conversation&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://silverlight.net/"&gt;Silverlight 2&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;I showed a couple of cool demos from &lt;a href="http://silverlight.net"&gt;http://silverlight.net&lt;/a&gt; then did an end-to-end coding demo. I created a new Silverlight project, showed how to write a basic Xaml layout, then did client side code behind in C#, customized the UI in blend including some cool animations, then I used the great visual layout capabilities of Expression to build standard form based UI complete with a DataGrid. I then went back to the server project and created a data access layer with Linq, encapsulated it with a WCF service and consumed that from the Silverlight client!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/NCTrip04.08/TRINUGSilverlightApp.zip"&gt;Download the completed Silverlight 2 WFC demo in C#&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/NCTrip04.08/TRINUGSilverlightApp(VB).zip"&gt;Download the completed Silverlight 2 WFC demo in Visual Basic&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;I showed how to build (and test!) a basic ASP.NET MVC application based on a LINQ datamodel. I created a solution with a web application and unit test project. I added a data access layer with Linq, created some a new controller action with business logic then created a very clean view to display the data. I then showed how to test one of the action methods with a test specific subclass.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/NCTrip04.08/MvcApplication5.zip"&gt;Download the ASP.NET MVC completed demo in C#&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/NCTrip04.08/MvcApplication5(VB).zip"&gt;Download the ASP.NET MVC completed demo in VB&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://quickstarts.asp.net/3-5-extensions/dyndata/default.aspx"&gt;ASP.NET Dynamic Data&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;I demoed the latest bits by creating a linq data model with a ton of tables. I then enabled the Dynamic Data to auto generate UIs&amp;#8230; the result (with no code) was a complete application to create, edit, update and view all of the data. I then showed three different layers to customize this UI. I created a Products class and added custom metadata to display how the products table is displayed including an allowed range and a tooltip. Then I customized how all the ListDetails pages are displayed using the ListDetails.aspx template and finally I changed how all strings in the application are displayed by changing the Item template.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/NCTrip04.08/BasicDynamicDataWebSite.zip"&gt;Download the ASP.NET Dynamic Data completed demo in C#&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/NCTrip04.08/BasicDynamicDataWebSite(VB).zip"&gt;Download the ASP.NET Dynamic Data completed demo in VB&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8382947" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/VB/default.aspx">VB</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>ASP.NET MVC in CodePlex and Extensible Unit Testing</title><link>http://blogs.msdn.com/brada/archive/2008/03/10/asp-net-mvc-in-codeplex-and-extensible-unit-testing.aspx</link><pubDate>Tue, 11 Mar 2008 05:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8142628</guid><dc:creator>BradA</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/brada/comments/8142628.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8142628</wfw:commentRss><description>&lt;P&gt;Phil has some good thoughts on &lt;A href="http://haacked.com/archive/2008/03/10/thoughts-on-asp.net-mvc-preview-2-and-beyond.aspx" mce_href="http://haacked.com/archive/2008/03/10/thoughts-on-asp.net-mvc-preview-2-and-beyond.aspx"&gt;ASP.NET MVC preview 2 and beyond.&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A couple of key things that I think are very cool with this project.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCinCodePlexandExtensibleUnitTes_1138B/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCinCodePlexandExtensibleUnitTes_1138B/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=67 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCinCodePlexandExtensibleUnitTes_1138B/image_thumb.png" width=188 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCinCodePlexandExtensibleUnitTes_1138B/image_thumb.png"&gt;&lt;/A&gt; CodePlex builds -- The team is very excited to be&amp;nbsp; able to ship out the source code and unit tests for ASP.NET MVC through it's release cycle on CodePlex.&amp;nbsp;&amp;nbsp;&amp;nbsp; We will still do regular CTPs and Betas and RTMs, outside of CodePlex in the normal way.&amp;nbsp; But CodePlex allows more frequent releases if you want to watch the evolution of the product more closely.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;IMG height=150 alt="Unit Testing Frameworks" src="http://haacked.com/images/haacked_com/WindowsLiveWriter/ASP.NETMVCUpdate_C69C/UnitTestingFrameworks_3.png" width=242 align=left mce_src="http://haacked.com/images/haacked_com/WindowsLiveWriter/ASP.NETMVCUpdate_C69C/UnitTestingFrameworks_3.png"&gt;&lt;/P&gt;
&lt;P&gt;Unit test integration -- We are very exited to be working closely with the TDD community on the ASP.NET MVC framework.&amp;nbsp; In fact the &lt;A href="http://mbunit.com/" mce_href="http://mbunit.com/"&gt;MbUnit&lt;/A&gt;&amp;nbsp; folks have already &lt;A href="http://weblogs.asp.net/astopford/archive/2008/03/10/microsoft-mvc-and-mbunit.aspx" mce_href="http://weblogs.asp.net/astopford/archive/2008/03/10/microsoft-mvc-and-mbunit.aspx"&gt;released updated installers&lt;/A&gt; that integrates support for MbUnit into ASP.NET MVC..&amp;nbsp;&amp;nbsp; I am sure the others will add support shortly.&amp;nbsp; Joe Cartano of the Web Tools team posted an updated &lt;A href="http://blogs.msdn.com/webdevtools/archive/2008/03/06/asp-net-mvc-test-framework-integration-demo.aspx" mce_href="http://blogs.msdn.com/webdevtools/archive/2008/03/06/asp-net-mvc-test-framework-integration-demo.aspx"&gt;streamlined walkthrough&lt;/A&gt; on how to do so using &lt;A href="http://nunit.com/" mce_href="http://nunit.com/"&gt;NUnit&lt;/A&gt; and &lt;A href="http://www.ayende.com/projects/rhino-mocks.aspx" mce_href="http://www.ayende.com/projects/rhino-mocks.aspx"&gt;Rhino Mocks&lt;/A&gt; as an example.&lt;/P&gt;
&lt;P&gt;Read &lt;A href="http://haacked.com/archive/2008/03/10/thoughts-on-asp.net-mvc-preview-2-and-beyond.aspx" mce_href="http://haacked.com/archive/2008/03/10/thoughts-on-asp.net-mvc-preview-2-and-beyond.aspx"&gt;more on Phil's blog&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thanks for your feedback on ASP.NET MVC...&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8142628" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>ASP.NET MVC Preview 2</title><link>http://blogs.msdn.com/brada/archive/2008/03/05/asp-net-mvc-preview-2.aspx</link><pubDate>Wed, 05 Mar 2008 20:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8053329</guid><dc:creator>BradA</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/brada/comments/8053329.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=8053329</wfw:commentRss><description>&lt;p&gt;A few weeks ago, ScottGu blogged about the &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx"&gt;ASP.NET MVC Framework roadmap&lt;/a&gt;...&amp;#160;&amp;#160;&amp;#160; I am happy to announce that we have taken the next step on that roadmap with the availability of the ASP.NET MVC Framework update.&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=110956" mce_href="http://go.microsoft.com/fwlink/?LinkID=110956"&gt;&lt;b&gt;ASP.NET MVC Preview 2&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The ASP.NET MVC Preview 2 release contains the latest version of the ASP.NET MVC framework and related Visual Studio tools support. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In this release we have incorporated a ton of feedback, added some new features and enhanced the tooling support!&lt;/p&gt;  &lt;p&gt;Check it out at &lt;a href="http://asp.net/mvc" mce_href="http://asp.net/mvc"&gt;http://asp.net/mvc&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Find some great &lt;a href="http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc" mce_href="http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc"&gt;video overviews of the new features&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Walk through the &lt;a href="http://quickstarts.asp.net/3-5-extensions/mvc/MVCOverview.aspx"&gt;MVC Quickstarts&lt;/a&gt; and use &lt;a href="http://forums.asp.net/1146.aspx"&gt;the MVC forums&lt;/a&gt; to ask questions and get help!&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8053329" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/Mix08/default.aspx">Mix08</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>ASP.NET MVC Example Application over Northwind with the Entity Framework</title><link>http://blogs.msdn.com/brada/archive/2008/01/29/asp-net-mvc-example-application-over-northwind-with-the-entity-framework.aspx</link><pubDate>Tue, 29 Jan 2008 21:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7274283</guid><dc:creator>BradA</dc:creator><slash:comments>41</slash:comments><comments>http://blogs.msdn.com/brada/comments/7274283.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=7274283</wfw:commentRss><description>&lt;P&gt;Over last month over the holidays, Lance Olson and I spent some time porting &lt;A href="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx"&gt;ScottGu's excellent MVC example&lt;/A&gt; over the &lt;A href="http://msdn2.microsoft.com/en-us/library/aa697427(vs.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa697427(vs.80).aspx"&gt;Entity Framework&lt;/A&gt;.&amp;nbsp; I thought I'd share the results here and get your thoughts\feedback.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;12-11-08:&amp;nbsp; I updated a few links and the example to match latest bits.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For this example, you will need:&lt;/P&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx" mce_href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx"&gt;VS2008&lt;/A&gt; (Free &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx" mce_href="http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx"&gt;trial&lt;/A&gt; ) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://asp.net/downloads/3.5-extensions/" mce_href="http://asp.net/downloads/3.5-extensions/"&gt;ASP.NET 3.5 Extensions&lt;/A&gt;&amp;nbsp;(Update: use lastest bits from &amp;nbsp;&lt;A href="http://asp.net/mvc"&gt;http://asp.net/mvc&lt;/A&gt; )&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=D8AE4404-8E05-41FC-94C8-C73D9E238F82&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=D8AE4404-8E05-41FC-94C8-C73D9E238F82&amp;amp;displaylang=en"&gt;ADO.NET Entity Framework Tools Dec 07 Preview&lt;/A&gt;&amp;nbsp;(Update: No longer needed, in VS2008 SP 1)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;amp;displaylang=en"&gt;Northwind sample database&lt;/A&gt; (just &lt;A href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/Northwind/NORTHWND.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/Northwind/NORTHWND.zip"&gt;northwnd.mdf&lt;/A&gt;)&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you are the type that likes to eat your desert first, you can skip to the end and just &lt;A href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/Northwind%20MVC%20Example.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/Northwind%20MVC%20Example.zip"&gt;download the full working solution&lt;/A&gt;&amp;nbsp;(Update: download this version of the &lt;A href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/NorthwindDemo.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/NorthwindDemo.zip"&gt;sample that works with latest bits&lt;/A&gt;).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Getting Started&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;File/New Project - Select ASP.NET MVC Web Application and Test&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb.png" width=244 height=165 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This creates a single solution with both a web application project as well as a project we can use for unit testing.&amp;nbsp;&amp;nbsp; Both are pre-populated with the basic stuff you need to get going.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Creating the Routes&lt;/U&gt;&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;One of the powerful new features that ASP.NET MVC brings to the table is the ability to customize the URLs that access your application. The URL routing feature explicitly breaks the connection between physical files on disk and the URL that is used to access a given bit of functionality.&amp;nbsp;&amp;nbsp; This is important for Search Engine Optimization as well as general usability of the website.&amp;nbsp;&amp;nbsp;&amp;nbsp; For example, rather than access &lt;A href="http://localhost/Products/ItemDetails.aspx?item=42" mce_href="http://localhost/Products/ItemDetails.aspx?item=42"&gt;http://localhost/Products/ItemDetails.aspx?item=42&lt;/A&gt; you can now very give a pretty URL such as &lt;A href="http://localhost/Products/CodFishOil" mce_href="http://localhost/Products/CodFishOil"&gt;http://localhost/Products/CodFishOil&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;This is done by creating a route table in the global.asax file in the MVC Application.&amp;nbsp;&amp;nbsp; Luckily for us, the defaults included in the template work perfectly this application.&amp;nbsp; &lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RouteTable&lt;/SPAN&gt;.Routes.Add(&lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Route
&lt;/SPAN&gt;{
    Url = &lt;SPAN style="COLOR: #a31515"&gt;"[controller]/[action]/[id]"&lt;/SPAN&gt;,
    Defaults = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;{ action = &lt;SPAN style="COLOR: #a31515"&gt;"Index"&lt;/SPAN&gt;, id = (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;)&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;},
    RouteHandler = &lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;MvcRouteHandler&lt;/SPAN&gt;)
});
&lt;/PRE&gt;
&lt;P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;This code spells out the format of the URLs we want to use for our site.&amp;nbsp; In particular, a URL of the format&lt;/P&gt;
&lt;P&gt;&lt;A href="http://localhost/Products/Details/CodFishOil" mce_href="http://localhost/Products/Details/CodFishOil"&gt;http://localhost/Products/Details/CodFishOil&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;would translate to the ProductsController class (notice we add the "Controller" suffix to the class name to make these classes stand out in the object model at design time).&amp;nbsp; Then the Action is a method on that class called Details and finally the argument to that details method is CodFishOil.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;It is of course possible to have other formats, simply by changing he regular expression in the URL pattern string.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Creating the Model&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The model represents the data you are going to use in the application.&amp;nbsp;&amp;nbsp; In our case, this is a pretty good place to start the core of the application.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In the App_Data direction of the MVCApplication copy the Northwind.mdf file.&amp;nbsp; Northwind is likely the most common example database we have for SqlServer... You can download it from &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;amp;displaylang=en"&gt;the official location&lt;/A&gt;, or for just the raw file, feel &lt;A href="http://brad_abrams.members.winisp.net/Projects/MVC+EFJan08/Northwind/NORTHWND.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/MVC+EFJan08/Northwind/NORTHWND.zip"&gt;free to grab it from here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_1.png" width=173 height=244 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Next, we need to create a LINQ model on top of northwind to make it easier to work with... You can do this with &lt;A href="http://www.hibernate.org/343.html" mce_href="http://www.hibernate.org/343.html"&gt;NHibernate&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/library/bb425822.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb425822.aspx"&gt;LinqToSql&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/library/aa697427(vs.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa697427(vs.80).aspx"&gt;Entity Framework&lt;/A&gt; , or any other .NET &lt;A href="http://en.wikipedia.org/wiki/Object-relational_mapping" mce_href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;OR-Mapping&lt;/A&gt; technology.&amp;nbsp; As long as it results in .NET Object, the ASP.NET MVC framework can work with it.&amp;nbsp; In this case I am going to use the Entity Framework.&lt;/P&gt;
&lt;P&gt;Right click on the &lt;STRONG&gt;Models &lt;/STRONG&gt;directory and select add new item&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_2.png" width=321 height=194 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;In the dialog select ADO.NET Entity Data Model.&lt;/P&gt;
&lt;P&gt;In the wizard, select "Generate from Database" and then go with the default "Northwnd" connection string.&lt;/P&gt;
&lt;P&gt;For our demo, we are only going to use the Categories, Products and Suppliers tables, but you could of course extend this demo to include a richer feature set.&amp;nbsp; But for now, unselect the Views and Stored Procedures and all the tables except those three..&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_8.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_3.png" width=244 height=227 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;When you click finished, VS will create a set of .NET classes that are custom built for accessing this database and we get a nice designer for visualizing the data relationships.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_10.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_4.png" width=244 height=152 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Notice, that the default names given to these classes still use the plural names from the database, but in our OR-Mapping they represent single instances, so to make the code easier to read, go in and change all the table names to their appropriate singular form: Category, Product and Supplier.&amp;nbsp;&amp;nbsp; Then Navigation properties on Product needs to be singular as there is only one Category and Suppler for each product.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_28.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_28.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_13.png" width=244 height=146 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_13.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Next we need to cleanup the namespace so things look pretty in our code... Right click on the design surface then set the properties such that namespace is "NorthwindModels" and the Entity Container name to "NorthWindEntities" &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_18.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_18.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_8.png" width=244 height=200 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_8.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;While we are not 100% done with the model, we have gotten the lion's share of it complete.. Let's switch over and look at the controller.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Creating the Controller&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Right click on the Controller directory and select "Add new Item".&amp;nbsp; In the dialog find MVC Controller and be sure to give it a name that ends in the Controller suffix.&amp;nbsp; In our case we are writing the ProductsController.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_14.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_6.png" width=244 height=148 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;OK, we are ready to start working in&amp;nbsp; ProductsController.cs&lt;/P&gt;
&lt;P&gt;The goal of the controller is to prepare the model for the view.&amp;nbsp;&amp;nbsp;&amp;nbsp; We want to bring as much logical as possible out of the view because it is so hard to test in the view.&amp;nbsp; So in the controller, we are going to be accessing the Model and getting it all set up so all the view has to do is spit out some data.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The first thing we need, is access to our database.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;1. Add the right namespaces... Linq and a reference to our OR mapping.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;System.Linq;
&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;NorthwindModel;&lt;/PRE&gt;
&lt;P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;2. Next, we create an instance of the NorthwindEntities container class.&amp;nbsp; Nearly all of our actions will access this class.&lt;/P&gt;&lt;PRE class=code&gt;    &lt;SPAN style="COLOR: blue"&gt;public class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ProductsController &lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;Controller
    &lt;/SPAN&gt;{
        &lt;SPAN style="COLOR: #2b91af"&gt;NorthwindEntities &lt;/SPAN&gt;Northwind = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;NorthwindEntities&lt;/SPAN&gt;(); 
&lt;/PRE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;OK, now we are ready to create our first action.. Listing all the categories.&amp;nbsp; Remember the job of the controller is to prepare the model for the view..&amp;nbsp;&amp;nbsp; When defining a new action, I like to start off by putting a comment that reminds me what the URL is that access this functionality.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The next thing we do is access the Categories table from the model.&amp;nbsp; I snap the results to a generic collection class (you may have to add a reference to System.Collections.Generic) then we pass the results to the view named "Categories".&amp;nbsp;&amp;nbsp;&amp;nbsp; This is a very simple example, later we will see more complex logic here.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: green"&gt;//URL: http://localhost/Products/Categories&lt;BR&gt;&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;ControllerAction&lt;/SPAN&gt;]&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;Categories()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt; categories = Northwind.Categories.ToList();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RenderView(&lt;SPAN style="COLOR: #a31515"&gt;"Categories"&lt;/SPAN&gt;, categories);&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Next step, we need to create the "Categories" view.. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Creating the View&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Right click on the Views folder, add new Directory "Products".&amp;nbsp; This so we can organize all our views cleanly.&amp;nbsp; The Right click on Views/Products folder and add new item MVC View Content Page.&amp;nbsp; We are going to leverage the Master Page that comes with the default project to make this look a little more pretty.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_20.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_20.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_9.png" width=244 height=163 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_9.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Call it Categories.aspx... It is important that the view name matches the first argument to the RenderView method above.&lt;/P&gt;
&lt;P&gt;The default project puts the master page in Views/Shared/Site.Master&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_22.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_22.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_10.png" width=244 height=150 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_10.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;In order to get the strongly typed access to the ViewData we are passing in from the controller, we need to tell the View Page, the type to expect.&amp;nbsp; This is done by opening up the codebehind (Categories.aspx.cs) and changing the derived type from:&lt;/P&gt;&lt;PRE class=code&gt;    &lt;SPAN style="COLOR: blue"&gt;public partial class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Categories &lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;ViewPage&lt;/SPAN&gt;
    {
    }
&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;to:&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public partial class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Categories &lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;ViewPage&lt;/SPAN&gt;&amp;lt; &lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt; &amp;gt; 
{
}
&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Then you simply write clean, simple, designable HTML.&amp;nbsp; Notice here I am looping over all the items returned in ViewData and pushing them out as a link.&amp;nbsp; I use the MVC helper method Html.ActionLink to create the URL for the List action with the appropriate product ID.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=code&gt;    &lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;h2&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Browse Products&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;h2&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;

    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;ul &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="categorylisting"&amp;gt;
    
      &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;foreach &lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;var &lt;/SPAN&gt;category &lt;SPAN style="COLOR: blue"&gt;in &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ViewData&lt;/SPAN&gt;) { &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt;    
        &lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;li&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
            &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;Html.ActionLink(category.CategoryName, &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;{ action=&lt;SPAN style="COLOR: #a31515"&gt;"List"&lt;/SPAN&gt;, id=category.CategoryName }) &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;            
        &lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;li&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    
      &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; } &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt;        
    &lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;ul&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;OK, we are finally ready to run it!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Hit F5, and navigate to the controller action we just wrote on &lt;A title=http://localhost:64701/products/Categories href="http://localhost:64701/products/Categories" mce_href="http://localhost:64701/products/Categories"&gt;http://localhost:64701/products/Categories&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_24.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_24.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_11.png" width=244 height=210 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_11.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Clicking on any of the links give you an error, because we haven't written the List action yet.. we will do that next.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;As an aside, if like me, you are in the habit of using "View in Browser" on aspx pages you develop, you are likely to see this error.&amp;nbsp; To reproduce, right click on Categories.aspx and select View in browser.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_26.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_26.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_12.png" width=244 height=138 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_12.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;You get an error. Why?&amp;nbsp; Well, remember with the MVC model, all execution goes through the controller, the views themselves are not runnable.&amp;nbsp;&amp;nbsp; Future tooling will make this better, but in the mean time, use F5 or you can "run in browser" with default.aspx.. just be sure you have built the solution first!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;The List Action, View &lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;OK, let's now go back and add the List action that we are missing.&amp;nbsp; What we need to do here is find all the products with a give Category.&amp;nbsp;&amp;nbsp; First I need to get all the products out of the model, then I need to ensure that the Category references are loaded.&amp;nbsp; The entity framework offers an explicit loading model by default.&amp;nbsp; As such you have to explicitly load any tables you need.&amp;nbsp; And finally we render the view.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: green"&gt;//example URL:http://localhost:64701/products/List/Confections
&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;ControllerAction&lt;/SPAN&gt;]
&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;List(&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;id)
{
    &lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Product&lt;/SPAN&gt;&amp;gt; products = Northwind.GetProductsByCategory(id);

    &lt;SPAN style="COLOR: green"&gt;//prepare the view by explicitly loading the categories  
    &lt;/SPAN&gt;products.FindAll(p =&amp;gt; p.Category == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;).ForEach(p =&amp;gt; p.CategoryReference.Load());

    RenderView(&lt;SPAN style="COLOR: #a31515"&gt;"ListingByCategory"&lt;/SPAN&gt;, products);

}
&lt;/PRE&gt;
&lt;P&gt;Notice, i am calling a custom method on the NorthwindDataContext class... Personally I like the idea of keeping all the data access logic encapsulated in that class.&amp;nbsp; So to define this method, Right click on the Model, add new Item, select CodeFile and name it NorthwindDataContext.cs and give it the implementation.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;System;
&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;System.Collections.Generic;
&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;System.Linq;

&lt;SPAN style="COLOR: blue"&gt;namespace &lt;/SPAN&gt;NorthwindModel
{
    &lt;SPAN style="COLOR: blue"&gt;public partial class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;NorthwindEntities
    &lt;/SPAN&gt;{

    }
}&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now you can easily add data access methods to this class... such as the GetProductsByCategory() method we use above.&amp;nbsp; &lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Product&lt;/SPAN&gt;&amp;gt; GetProductsByCategory(&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;category)
{
    &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;Products.Where(p =&amp;gt; p.Category.CategoryName == category).ToList();
}
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Next, we need to add the ListingByCategory view... We follow the same steps from above to add a ListingByCategory.aspx page in the Views/Products/ directory.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;This time, we should make the ViewData be of type List&amp;lt;Products&amp;gt;&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public partial class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ListingByCategory &lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;ViewPage&lt;/SPAN&gt;&amp;lt; &lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Product&lt;/SPAN&gt;&amp;gt; &amp;gt; 
 {
 }&lt;/PRE&gt;
&lt;P&gt;Next, to implement the view, we simply loop over the view data and spit it out in the right format.&lt;/P&gt;&lt;PRE class=code&gt;  
&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;--Print out the catagory name--&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;  
  &lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;foreach &lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;var &lt;/SPAN&gt;product &lt;SPAN style="COLOR: blue"&gt;in &lt;/SPAN&gt;ViewData) { &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt;  &lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;(product.Category.CategoryName != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) {  &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;h2&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;  &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;product.Category.CategoryName  &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;h2&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; 
    &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;break&lt;/SPAN&gt;; &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;} &lt;SPAN style="COLOR: green"&gt;//end if &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;}&lt;SPAN style="COLOR: green"&gt;//end foreach &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt;        
    &lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;ul &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="productlist"&amp;gt;
    
        &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;foreach &lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;var &lt;/SPAN&gt;product &lt;SPAN style="COLOR: blue"&gt;in &lt;/SPAN&gt;ViewData) { &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt;        
            &lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;li&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
                &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;img &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;src&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="/Content/Images/&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;=product.ProductID&lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;.jpg" &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;alt&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;=product.ProductName &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;" /&amp;gt; 
                &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;br&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt; 
                &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;a &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;href&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="/Products/Detail/&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;=product.ProductID &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;"&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;product.ProductName &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;a&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
                &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;br &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;
                &lt;/SPAN&gt;Price: &lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;.Format(&lt;SPAN style="COLOR: #a31515"&gt;"{0:C2}"&lt;/SPAN&gt;, product.UnitPrice)&lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt; 
                  &lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;span &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="editlink""&amp;gt;
                    &lt;/SPAN&gt;(&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;Html.ActionLink(&lt;SPAN style="COLOR: #a31515"&gt;"Edit"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;{ Action=&lt;SPAN style="COLOR: #a31515"&gt;"Edit"&lt;/SPAN&gt;, ID=product.ProductID })&lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;)
                &lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;span&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
           
            &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;li&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    
        &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt; } &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;
&lt;/SPAN&gt;        
    &lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;ul&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;Once you add the /Content/Images directory from the sample project you get this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_30.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_30.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_14.png" width=214 height=244 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_14.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Unit Testing&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One of the primary&amp;nbsp; reasons for using the MVC model is to enable Test Driven Development and more generically Unit Testing.&amp;nbsp; Unit testing UIs is notoriously difficult.&amp;nbsp; Automation is fragile and hiring an army of testers to click on buttons is not always cost effective.&amp;nbsp; The model MVC is going for is to separate out as much code (and therefore potential bugs) as possible into the Model and the Controller where they are testable. &lt;/P&gt;
&lt;P&gt;So, we are going to write Unit Tests for the two control methods we just created and the corresponding logic in the model.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;First, we need to setup our testing environment.&amp;nbsp; The default template already created a Test project we can start to customize.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;1. In the MvcApplicationTest project, create a new class called ProductControllerTest.cs&lt;/P&gt;
&lt;P&gt;2. Add a method for testing the Categories action we defined above.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;namespace &lt;/SPAN&gt;MvcApplicationTest.Controllers
{

    [&lt;SPAN style="COLOR: #2b91af"&gt;TestClass&lt;/SPAN&gt;]
    &lt;SPAN style="COLOR: blue"&gt;public class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ProductsControllerTest
    &lt;/SPAN&gt;{

        [&lt;SPAN style="COLOR: #2b91af"&gt;TestMethod&lt;/SPAN&gt;]
        &lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;Categories()
        {

        }
    }
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;3. We want to test the controller we wrote, but we don't want to load IIS and all of ASP.NET... we want to have the leanest, most simple system we can to avoid test breaks, etc.&amp;nbsp;&amp;nbsp; To that end, I created a test specific subclass of the ProductsController we defined above.&amp;nbsp; In this subclass I override the RenderView method.&amp;nbsp; Instead of calling out to ASP.NET, my test specific implement simply captures the arguments so they can be queried later in the test.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TestProductsController &lt;/SPAN&gt;: ProductsController
{
    &lt;SPAN style="COLOR: blue"&gt;public string &lt;/SPAN&gt;ViewName { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }
    &lt;SPAN style="COLOR: blue"&gt;public string &lt;/SPAN&gt;MasterName { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }
    &lt;SPAN style="COLOR: blue"&gt;public new object &lt;/SPAN&gt;ViewData { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;; }
    &lt;SPAN style="COLOR: blue"&gt;protected override void &lt;/SPAN&gt;RenderView(&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;viewName, &lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;masterName, &lt;SPAN style="COLOR: blue"&gt;object &lt;/SPAN&gt;viewData)
    {
        ViewData = viewData;
        MasterName = masterName;
        ViewName = viewName;
    }
  }&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;4. Now we implement the test!&amp;nbsp; First we create an instance of our test controller, then I create some dummy&amp;nbsp; (or mock) data.&amp;nbsp; The idea here is that we don't want to hit the production database (or any database for that mater) in our tests.&amp;nbsp; We want exactly the data we need for the test, no more, no less.&amp;nbsp; Then we set up the NorthwindDataContext to use our data rather than the data from the database.&amp;nbsp; Then we call the controller action we are trying to test.&amp;nbsp; Finally, we assert a few things..&amp;nbsp; that the type of the ViewData is right, that the number&amp;nbsp; of items returned is right, etc.&amp;nbsp;&amp;nbsp; Notice, you will need to add a reference to the EntityFramework (System.Data.Entity.dll) in your test project to use these EF generated types like Product, Category, etc.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=code&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;TestMethod&lt;/SPAN&gt;]
&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;Categories()
{
    &lt;SPAN style="COLOR: green"&gt;// Create Products Controller
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TestProductsController &lt;/SPAN&gt;controller = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TestProductsController&lt;/SPAN&gt;();

    &lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt; l = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt;();
    l.Add(&lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;() { CategoryName = &lt;SPAN style="COLOR: #a31515"&gt;"Drink" &lt;/SPAN&gt;});
    l.Add(&lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;() { CategoryName = &lt;SPAN style="COLOR: #a31515"&gt;"Food" &lt;/SPAN&gt;});
    l.Add(&lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;() { CategoryName = &lt;SPAN style="COLOR: #a31515"&gt;"Cheese" &lt;/SPAN&gt;});

    controller.Northwind.TheCategories = l.AsQueryable();

    &lt;SPAN style="COLOR: green"&gt;// Invoke Controller Action
    &lt;/SPAN&gt;controller.Categories();

    &lt;SPAN style="COLOR: green"&gt;// Verify Detail Action Behavior
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.AreEqual(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt;),
                     controller.ViewData.GetType(),
                     &lt;SPAN style="COLOR: #a31515"&gt;"Product object Passed to View"&lt;/SPAN&gt;);

    &lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.AreEqual(3,
                     ((&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt;)controller.ViewData).Count,
                     &lt;SPAN style="COLOR: #a31515"&gt;"Correct Number of Catagories returned"&lt;/SPAN&gt;);

    &lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.AreEqual(&lt;SPAN style="COLOR: #a31515"&gt;"Food"&lt;/SPAN&gt;,
                     ((&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Category&lt;/SPAN&gt;&amp;gt;)controller.ViewData)[1].CategoryName,
                     &lt;SPAN style="COLOR: #a31515"&gt;"Correct Product Object Passed to View"&lt;/SPAN&gt;);

    &lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.AreEqual(&lt;SPAN style="COLOR: #a31515"&gt;"Categories"&lt;/SPAN&gt;,
                     controller.ViewName,
                     &lt;SPAN style="COLOR: #a31515"&gt;"Correct View Rendered"&lt;/SPAN&gt;);

}
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;5. Set the connection string in the test project so that it access the metadata from EF model, but &lt;STRONG&gt;&lt;EM&gt;does not open the database&lt;/EM&gt;&lt;/STRONG&gt;.&amp;nbsp; In MVCApplicationTest add an app.config file to the root of the project with the this connection string. &lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xml &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt;
&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;configuration&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
  &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;connectionStrings&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;add &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;NorthwindEntities&lt;/SPAN&gt;"
         &lt;SPAN style="COLOR: red"&gt;connectionString&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;metadata=res://*/;provider=System.Data.SqlClient;&lt;/SPAN&gt;"
         &lt;SPAN style="COLOR: red"&gt;providerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;System.Data.EntityClient&lt;/SPAN&gt;" &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;
  &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;connectionStrings&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;configuration&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, we need to go back to the EDM designer and set it to embed the metadata for the model as part of the assembly.&amp;nbsp; This makes our connection string above much more simple.&amp;nbsp; Double click on the edmx file, then click on the conceptual model in the model browser and in the property sheet you change the property Metadata Artifact Processing from “Copy to Output Directory” to “Embed in&amp;nbsp; Output Assembly”&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_33.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_33.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_5.png" width=244 height=168 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;6. Now we need to do just a bit of setup in the MVCApplication to enable a great testing experience... There are a few tricks here and what I am showing is NOT the definitive model (there isn't a definitive model yet)... but I like it, so what the heck!&lt;/P&gt;
&lt;P&gt;MVCApplication/Model/NorthwindDataContext.cs add the following encapsulation of the Categories property.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;private &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IQueryable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Product&lt;/SPAN&gt;&amp;gt; savedProducts = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;
&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IQueryable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Product&lt;/SPAN&gt;&amp;gt; TheProducts
{
    &lt;SPAN style="COLOR: blue"&gt;get
    &lt;/SPAN&gt;{
        &lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;(savedProducts == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) savedProducts = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Products;
        &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;savedProducts;
    }
    &lt;SPAN style="COLOR: blue"&gt;set
    &lt;/SPAN&gt;{
        savedProducts = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;
    }
}
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;Then, make sure that all access go through this abstraction.&amp;nbsp; For example:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Product&lt;/SPAN&gt;&amp;gt; GetProductsByCategory(&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;category)
{
    &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;TheProducts.Where(p =&amp;gt; p.Category.CategoryName == category).ToList();
}&lt;/PRE&gt;
&lt;P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;Finally, we need to make sure the NorthwindEntities is accessible from the test classes, so in ProductsController.cs add the "public" modifier.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;NorthwindEntities &lt;/SPAN&gt;Northwind = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;NorthwindEntities&lt;/SPAN&gt;();&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, we are able to run our test.&amp;nbsp; You can do this by setting the test project as being the "startup project" (right click on the test project) or you can select Test/Run menu option.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_35.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_35.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_7.png" width=244 height=167 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ASP.NETMVCExampleApplicationoverNorthwin_BA7B/image_thumb_7.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Well, that is the lap around MVC+EF... There is a lot more to the sample I posted.&amp;nbsp; If there is interest and I get the time, I will walk through the rest in future blog posts, but all the source code is there, so you can have fun with it on your own!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;You can download the &lt;A href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/Northwind%20MVC%20Example.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/Northwind%20MVC%20Example.zip"&gt;full working example here&lt;/A&gt;&amp;nbsp;(Updated to &lt;A href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/NorthwindDemo.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/MVCEFJan08/NorthwindDemo.zip"&gt;work with latest bits&lt;/A&gt;).&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7274283" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>Software Development Predictions for 2008</title><link>http://blogs.msdn.com/brada/archive/2007/12/31/software-development-predictions-for-2008.aspx</link><pubDate>Mon, 31 Dec 2007 19:06:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6832647</guid><dc:creator>BradA</dc:creator><slash:comments>23</slash:comments><comments>http://blogs.msdn.com/brada/comments/6832647.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=6832647</wfw:commentRss><description>&lt;p&gt;Happy New Year!&amp;nbsp; &lt;p&gt;Not too long ago, I was asked for my predictions for the IT-Technology in 2008...&amp;nbsp; You can find the full article here, but I thought I'd include my thoughts on my blog.&amp;nbsp; &lt;p&gt;&lt;a href="http://java.sys-con.com/read/478303.htm"&gt;Where's i-Technology Headed in 2008?&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;I'd love to hear your thoughts and comments &lt;p&gt;&amp;nbsp; &lt;p&gt;1. &lt;strong&gt;User Experience Reaches the Enterprise.&lt;/strong&gt; In 2008 we will see several major enterprises start efforts to build UX centric applications that increase worker productivity, reduced transaction costs and increase pull through as the UX meme of the consumer facing world leaks into the enterprise. The days of the battleship gray, forms of data application as the king of the enterprise are numbered because of an imperative towards richer visualization of complex and interconnected data. While there will always be a need for the traditional sort of application, by the end of 2008, it is no longer the only element of the corporate landscape. &lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/SoftwareDevelopmentPredictionsfor2008_116C9/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/SoftwareDevelopmentPredictionsfor2008_116C9/image_thumb.png" width="234" align="right" border="0"&gt;&lt;/a&gt;  &lt;p&gt;2. &lt;strong&gt;Testability Becomes a Requirement for Software Development Frameworks.&lt;/strong&gt; No longer satisfied with simple reductions in costs for initial development, a growing community demand frameworks and tools that facilitate sustainable and agile practices. 2008 is the year that frameworks and tools take notice and start to deliver solutions that are testable out of the box. Technologies such as Test Driven Development, MVC/MVP patterns, and frameworks that support mocking become mainstream. After seeing this year’s cool demos at software development industry conferences a common question will be: “...And how do you test that?” Let’s hope the presenters have an answer.  &lt;p&gt;3. &lt;strong&gt;The Companion Applications Become Practical.&lt;/strong&gt; While RIA and AJAX application categories continue to grow, many consumer facing web applications and enterprise applications developers realize there is a need for desktop exploitive applications as well as reach web applications that work everywhere. What meaningful application wouldn’t benefit from a pairing like that of Outlook and Outlook Web Access? In the past it has been prohibitively expensive to build these applications, but with the circa 2008 technology such as .NET Framework 3.5 and Silverlight, it is finally becoming practical to have a single codebase that fully exploits the desktop and offers a rich web experience. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6832647" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>Results for Ajax usage among .NET developers</title><link>http://blogs.msdn.com/brada/archive/2007/12/21/results-for-ajax-usage-among-net-developers.aspx</link><pubDate>Sat, 22 Dec 2007 02:24:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6830948</guid><dc:creator>BradA</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/brada/comments/6830948.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=6830948</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://codeclimber.net.nz/"&gt;Simone Chiaretta&lt;/a&gt; recently posted the &lt;a href="http://codeclimber.net.nz/archive/2007/12/21/.NET-Ajax-Survey-results.aspx"&gt;results&lt;/a&gt; to his &lt;a href="http://blogs.msdn.com/brada/archive/2007/12/18/ajax-usage-among-net-developers.aspx"&gt;Ajax usage survey&lt;/a&gt;.&amp;nbsp; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Check out the: &lt;a href="http://codeclimber.net.nz/archive/2007/12/21/.NET-Ajax-Survey-results.aspx"&gt;.NET Ajax Survey results&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Simone has a great write up, including the raw data, I encourage you &lt;a href="http://codeclimber.net.nz/archive/2007/12/21/.NET-Ajax-Survey-results.aspx"&gt;to check it out&lt;/a&gt;...&amp;nbsp; But A couple of things that popped out to me:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ResultsforAjaxusageamong.NETdevelopers_D4B6/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="279" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/ResultsforAjaxusageamong.NETdevelopers_D4B6/image_thumb.png" width="251" align="right" border="0"&gt;&lt;/a&gt; 1. Simone concludes that &lt;strong&gt;84%&lt;/strong&gt; of ASP.NET developers are using &lt;a href="http://asp.net/ajax/"&gt;ASP.NET AJAX&lt;/a&gt;... That is an amazingly high percentage... I am excited that we could help that large a percentage of developers!&lt;/p&gt; &lt;p&gt;2. I am a bit surprised that only about &lt;strong&gt;~50% &lt;/strong&gt;of developers are using the &lt;a href="http://asp.net/ajax/ajaxcontroltoolkit/"&gt;AJAX Control Toolkit.&lt;/a&gt;&amp;nbsp; I'd love to hear your thoughts on using the toolkit?&amp;nbsp; Do you think it is a naming thing (people don't get the difference between ASP.NET AJAX and the AJAX toolkit?) or maybe it has to do with the heavy update panel usage, or are the factors that prevent developers from using the toolkit?&amp;nbsp; Any theories?&lt;/p&gt; &lt;p&gt;3. Apparently, &lt;a href="http://asp.net/AJAX/Documentation/Live/tutorials/IntroductionUpdatePanel.aspx"&gt;UpdatePanel&lt;/a&gt; kicks butt!&amp;nbsp; &lt;strong&gt;91.8% &lt;/strong&gt;of ASP.NET AJAX users are using UpdatePanel.&amp;nbsp; Personally, I love this feature as well.&amp;nbsp; It gives you Ajax style of interactivity for your application without writing client side Ajax code!&lt;/p&gt; &lt;p&gt;4. Last but not least, I am absolutely amazed at the high early uptake of the &lt;a href="http://asp.net/downloads/3.5-extensions/"&gt;ASP.NET MVC Framework&lt;/a&gt;.&amp;nbsp; We are just a couple of weeks into our first public CTP and already &lt;strong&gt;2.3% &lt;/strong&gt;of folks said they are using it!&amp;nbsp; That is way higher than i'd expect so early on.&amp;nbsp; What is more, is that his a much higher percentage than any of the other, much more mature, MVC frameworks.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6830948" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>The Wait is Over: ASP.NET 3.5 Extensions Preview Posted</title><link>http://blogs.msdn.com/brada/archive/2007/12/09/the-wait-is-over-asp-net-3-5-extensions-preview-posted.aspx</link><pubDate>Mon, 10 Dec 2007 06:29:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6719006</guid><dc:creator>BradA</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/brada/comments/6719006.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=6719006</wfw:commentRss><description>&lt;p&gt;Ok, ok, it took us a little longer than we expected, but we finally got the &lt;a href="http://www.asp.net/downloads/3.5-extensions/"&gt;ASP.NET 3.5 Extension Preview posted&lt;/a&gt;! This is the release with all the MVC goodness you have been hearing about as well as some very cool stuff&amp;nbsp; such as Dynamic Data controls which makes building data driven web applications a breeze, AJAX history support, ADO.NET Data Services (aka Astoria), the ADO.NET Entity Framework and updated ASP.NET support for Silverlight.&lt;/p&gt; &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=105029"&gt;Download the bits&lt;/a&gt; - they work with VS 2008 and are side-by-side so they will not hork your system&lt;/p&gt; &lt;p&gt;&lt;a href="http://quickstarts.asp.net/3-5-extensions"&gt;Check out the Quick Starts&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://forums.asp.net/1147.aspx"&gt;Get Involved in the Forums&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Here are a few links to get you going:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ScottGu has an &lt;a href="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx"&gt;excellent 4 part tutorial on building&lt;/a&gt; an MVC based application... &lt;/li&gt; &lt;li&gt;Phil Haack has &lt;a href="http://haacked.com/Default.aspx"&gt;some great info on his&lt;/a&gt; blog (he is the PM for MVC)&lt;/li&gt; &lt;li&gt;&lt;a href="http://blog.wekeroad.com"&gt;Rob Conery &lt;/a&gt;has some great stuff as well.. he is the author of the HTML helpers in the &lt;a href="http://www.asp.net/downloads/3.5-extensions/MVCToolkit.zip"&gt;MVCToolkit.zip&lt;/a&gt; that adds a lot of cool gravy to the MVC stuff. &lt;/li&gt; &lt;li&gt;Oh, and now you can play with my &lt;a href="http://blogs.msdn.com/brada/archive/2007/11/14/rss-feed-with-the-new-asp-net-mvc-framework.aspx"&gt;MVC RSS sample&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/davidebb/"&gt;David Ebbo&lt;/a&gt; is the dev for the Dynamic Data controls and the author of the Oryx for MVC support in the &lt;a href="http://www.asp.net/downloads/3.5-extensions/MVCToolkit.zip"&gt;MVCToolkit.zip&lt;/a&gt;.&amp;nbsp; &lt;/li&gt; &lt;li&gt; Nikhil Kothari has some very &lt;a href="http://www.nikhilk.net/Ajax-MVC.aspx"&gt;cool AJAX\MVC work&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://weblogs.asp.net/infinitiesloop/about.aspx"&gt;Dave Reed&lt;/a&gt; has some good info on the ASP.NET Silverlight support, I am sure he will be updating it soon for this preview..&lt;/li&gt; &lt;li&gt;Some great &lt;a href="http://astoria.mslivelabs.com/Default.aspx"&gt;info on Astoria&lt;/a&gt;.. I mean the ADO.NET Data Services ;-)&lt;/li&gt; &lt;li&gt;Bertrand Le Roy has some information on the &lt;a href="http://weblogs.asp.net/bleroy/archive/2007/09/07/how-to-build-a-cross-browser-history-management-system.aspx"&gt;AJAX support such as History..&lt;/a&gt; I am sure he will be posting about this release soon as well.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6719006" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item><item><title>RSS Feed with the new ASP.NET MVC Framework</title><link>http://blogs.msdn.com/brada/archive/2007/11/14/rss-feed-with-the-new-asp-net-mvc-framework.aspx</link><pubDate>Thu, 15 Nov 2007 09:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6245309</guid><dc:creator>BradA</dc:creator><slash:comments>47</slash:comments><comments>http://blogs.msdn.com/brada/comments/6245309.aspx</comments><wfw:commentRss>http://blogs.msdn.com/brada/commentrss.aspx?PostID=6245309</wfw:commentRss><description>&lt;p&gt;I thought I'd add my own MVC example to the great work that &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx"&gt;ScottGu&lt;/a&gt; and &lt;a href="http://www.hanselman.com/blog/DevConnectionsAndPNPSummitMVCDemosSourceCode.aspx" mce_href="http://www.hanselman.com/blog/DevConnectionsAndPNPSummitMVCDemosSourceCode.aspx"&gt;Hanselman&lt;/a&gt; have already outlined...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I know folks are ready to get their hands on these bits and believe me the team is working hard to get them out in a public CTP as soon as we can.. In the mean time, you will have to settle for these teasers ;-)&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In this example, I am going to walk through building an RSS feed from data in a relational database..&amp;nbsp; My goal here is to give you and idea of what is possible with the MVC support that is coming out as a CTP soon for ASP.NET... &lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;File/New Project and select the MVC Project item&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="225" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb.png" width="316" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;There is some good stuff here, that really shows you how to get going... but for what we are going to do, we don't really need it...&amp;nbsp; so go ahead and clear out all the directories and files under Views, Models and Controllers... we will build this from scratch.&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Creating the Model&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Because I had an existing database, I chose to start with it...&amp;nbsp; I added my VideoDatabase.mdf file from another project I worked on recently.. of course any database would work.&amp;nbsp; Then I created a Linq model and called it "VideoDatabase.dbml"... Notice of course EntityFramework would work really well here as well...&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_1.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_1.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In the LINQ designer, I added the Items table to the design surface&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_2.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_2.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;and then moved the resulting VideoDatabase.dbml file to the Models directory... We now have our model done!&amp;nbsp; &lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Creating the Controller&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Next we add our controller which handles the UI logic of our application..&amp;nbsp; I click on the Controllers folder and Add new item&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_3.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_3.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I called it FeedController, but remember, this has to end in Controller as there are some conventions we use to find these types.. I added the following code to get the list of items from the database and pass it to the view...&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FeedController&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Controller&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green"&gt;//example: http://localhost:64701/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ControllerAction&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Index()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; list =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;from&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;orderby&lt;/span&gt; item.Title&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RenderView(&lt;span style="color: #a31515"&gt;"Feed"&lt;/span&gt;, list.ToList());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;(note: be sure to add using MvcApplication.Models)  &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Creating the View&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The view we want for an RSS feed is actually an not HTML... it is an XML file... but we want to programmatically generate it.&amp;nbsp; I started by creating a new directory called "Feed" under "View" and added an MVC View Page called "Feed"...&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_5.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_5.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Then I went to my blog and grabbed the RSS feed to use as an example.&amp;nbsp; You can create a temporary XML file in VS to view it cleanly, then strip all but one entry...&amp;nbsp;&amp;nbsp; You will end up with something like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_4.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_4.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next we need to parameterize this to use the data from our Model...&amp;nbsp; &lt;/p&gt; &lt;p&gt;The first thing to do to enable that is to type the ViewData this page will work with.. you do that by going into the codebehind and setting the base class to be associated with the Item from our Model...&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;namespace&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; MvcApplication.Views.Feed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Feed&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;ViewPage&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Item&lt;/span&gt;&amp;gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;(note: be sure to add using System.Collections.Generic and using MvcApplication.Models)  &lt;p&gt;Then, back in the feed.aspx page, you can access the view data... right before the open &amp;lt;item&amp;gt; add the start of a foreach loop, then close it after the end...&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; background: yellow; font-family: 'Courier New'; mso-no-proof: yes; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Item&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.ViewData) { &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;item&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Then, replace each value with the appropriate data from the view programmatically...&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;link&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 10pt; background: yellow; font-family: 'Courier New'; mso-no-proof: yes; mso-highlight: yellow; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;=&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; item.VideoLink&lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;link&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;What you end up with looks like this:&lt;/p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_14.png"&gt;&lt;/a&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; background: yellow; font-family: 'Courier New'; mso-no-proof: yes; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;@&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="color: #a31515"&gt;Page&lt;/span&gt; &lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;="C#"&lt;/span&gt; &lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;="true"&lt;/span&gt; &lt;span style="color: red"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: blue"&gt;="Feed.aspx.cs"&lt;/span&gt; &lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;="MvcApplication.Views.Feed.Feed"&lt;/span&gt; &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; background: yellow; font-family: 'Courier New'; mso-no-proof: yes; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;@&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="color: #a31515"&gt;Import&lt;/span&gt; &lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;="MvcApplication.Models"&lt;/span&gt; &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; background: yellow; font-family: 'Courier New'; mso-no-proof: yes; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;@&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="color: #a31515"&gt;Import&lt;/span&gt; &lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;="System.Collections.Generic"&lt;/span&gt; &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt; &lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;="1.0"&lt;/span&gt; &lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;="utf-8"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'; mso-no-proof: yes"&gt;rss&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;="2.0"&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;atom&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.w3.org/2005/Atom"&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.microsoft.com/schemas/rss/core/2005"&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;dc&lt;/span&gt;&lt;span style="color: blue"&gt;="http://purl.org/dc/elements/1.1/"&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;slash&lt;/span&gt;&lt;span style="color: blue"&gt;="http://purl.org/rss/1.0/modules/slash/"&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;wfw&lt;/span&gt;&lt;span style="color: blue"&gt;="http://wellformedweb.org/CommentAPI/"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;channel&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;cfi&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.microsoft.com/schemas/rss/core/2005/internal"&lt;/span&gt; &lt;span style="color: #a31515"&gt;cfi&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;lastdownloaderror&lt;/span&gt;&lt;span style="color: blue"&gt;="None"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt; &lt;span style="color: #a31515"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text"&amp;gt;&lt;/span&gt; MySilverlightTV Feed&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;link&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;http://blogs.msdn.com/brada/default.aspx&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;link&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;description&lt;/span&gt; &lt;span style="color: #a31515"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text"&amp;gt;&lt;/span&gt;Check out the latest videos from MySilverlightTV&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;dc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;language&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;en-US&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;dc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;language&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;generator&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;MVC RSS&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;generator&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Item&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.ViewData) { &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;item&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.microsoft.com/schemas/rss/core/2005"&lt;/span&gt; &lt;span style="color: #a31515"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;item.Title &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;link&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; item.VideoLink&lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;link&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;pubDate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToFileTimeUtc() &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;pubDate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; item.Owner&lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;author&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;description&lt;/span&gt; &lt;span style="color: #a31515"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.microsoft.com/schemas/rss/core/2005"&lt;/span&gt; &lt;span style="color: #a31515"&gt;cf&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="html"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; item.Description &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;item&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt; } &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; background: yellow; font-family: 'Courier New'; mso-no-proof: yes; mso-highlight: yellow"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;channel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'; mso-no-proof: yes"&gt;rss&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Run it&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;We want to navigate to the Controller we created..&amp;nbsp; so navigate to &lt;a title="http://localhost:64701/feed" href="http://localhost:64701/feed" mce_href="http://localhost:64701/feed"&gt;http://localhost:64701/feed&lt;/a&gt;&lt;/p&gt; &lt;p&gt;and you get this beautiful RSS feed ready to work in any blog reader:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="194" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_7.png" width="244" border="0" mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RSSFeedwiththenewASP.NETMVCFramework_132DD/image_thumb_7.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;But there is more&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Of course there is was only a few lines of code here, but really I could have done this just as easily, what does all that MVC stuff buy you?&amp;nbsp;&amp;nbsp;&amp;nbsp; Well, a good architecture for one, and that means it is super flexible.&amp;nbsp; So when you need to add a different feed, say the most popular items, or the new items added, or the top 10 items, it is very easy to do...&amp;nbsp; Here are a few more items I added by only touching the controller, everything else stayed the same:&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FeedController&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Controller&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green"&gt;//example: http://localhost:64701/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ControllerAction&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Index()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; list =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;from&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;orderby&lt;/span&gt; item.Title&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RenderView(&lt;span style="color: #a31515"&gt;"Feed"&lt;/span&gt;, list.ToList());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green"&gt;//example: http://localhost:64701/feed/Top10&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ControllerAction&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Top10()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; list =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;from&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;orderby&lt;/span&gt; item.Rating&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RenderView(&lt;span style="color: #a31515"&gt;"Feed"&lt;/span&gt;, list.Take(10).ToList());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green"&gt;//example: http://localhost:64701/feed/Top?n=2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ControllerAction&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Top(&lt;span style="color: blue"&gt;int&lt;/span&gt; n)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; list =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;from&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;orderby&lt;/span&gt; item.Rating&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RenderView(&lt;span style="color: #a31515"&gt;"Feed"&lt;/span&gt;, list.Take(n).ToList());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green"&gt;//example: http://localhost:64701/feed/FromMSFT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ControllerAction&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; FromMSFT()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; list =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;from&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;orderby&lt;/span&gt; item.Title&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;where&lt;/span&gt; item.Owner == &lt;span style="color: #a31515"&gt;"MSFT"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RenderView(&lt;span style="color: #a31515"&gt;"Feed"&lt;/span&gt;, list.ToList());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green"&gt;//example: http://localhost:64701/feed/FromPublisher?Publisher=WildAmerica&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;ControllerAction&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; FromPublisher(&lt;span style="color: blue"&gt;string&lt;/span&gt; publisher)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;VideoDatabaseDataContext&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; list =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;from&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; context.Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;orderby&lt;/span&gt; item.Title&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;where&lt;/span&gt; item.Owner == publisher&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RenderView(&lt;span style="color: #a31515"&gt;"Feed"&lt;/span&gt;, list.ToList());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p mce_keep="true"&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p mce_keep="true"&gt;What do you think?&amp;nbsp; are we on the right track?&lt;/p&gt; &lt;p mce_keep="true"&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6245309" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/brada/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/brada/archive/tags/ASPMVC/default.aspx">ASPMVC</category></item></channel></rss>