<?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>Jim O'Neil's Blog : Dynamic Data</title><link>http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx</link><description>Tags: Dynamic Data</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>ASP.NET Dynamic Data Preview 4 Available</title><link>http://blogs.msdn.com/jimoneil/archive/2009/05/07/asp-net-dynamic-data-preview-4-available.aspx</link><pubDate>Thu, 07 May 2009 17:37:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9593714</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/9593714.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=9593714</wfw:commentRss><description>&lt;p&gt;The latest preview release of ASP.NET Dynamic Data is now &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27026."&gt;available from CodePlex.&lt;/a&gt;&amp;#160; These previews give you insight into the feature set that will be available when .NET 4 is released; however, you can start using them &lt;em&gt;right now&lt;/em&gt; with .NET 3.5 SP1!&lt;/p&gt;  &lt;p&gt;I’ve done quite a few presentations on Dynamic Data (&lt;a href="http://channel9.msdn.com/posts/dpeeast/Northeast-Roadshow-ASPNET-Dynamic-Data/"&gt;check out my screen cast&lt;/a&gt; for a taste of what it can do), so I’m looking forward to playing with the new bits.&amp;#160; This drop is specifically focused on integrating the coolness of field templates and validation into your existing sites, which is really where the true potential of Dynamic Data lies.&lt;/p&gt;  &lt;p&gt;Here’s a blurb from &lt;a href="http://blogs.msdn.com/scothu/archive/2009/05/07/dynamic-data-preview-4-released.aspx"&gt;Scott Hunter’s blog post&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 15px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" align="left" src="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/ASP.NETDynamicDataPreview4Available_9547/320px-Left_pointing_double_angle_quotation_mark_sh1_svg_3.png" width="40" height="44" /&gt;When we look back and see how people view Dynamic Data we regret that people immediately think of it as scaffolding of data. This is something that it does do, and I think it does a pretty good job at it. But Dynamic Data is a lot more then that, providing a new templating mechanism called Field Templates which allow the default markup for many of our built in data controls to be more easily customized. These field templates also support validation by default (something our rich data controls did not) which can be customized by adding metadata to data objects.&lt;/p&gt;  &lt;p&gt;In the past to enable Dynamic Data functionality in a web application the application needed to follow a couple of rules:&lt;/p&gt;  &lt;p&gt;- It had to have a data model such as Entity Framework or Linq to SQL&lt;/p&gt;  &lt;p&gt;- The data model had to be registered at startup in Global.asax&lt;/p&gt;  &lt;p&gt;- The DynamicData directory had to exist in the web application&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" align="right" src="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/ASP.NETDynamicDataPreview4Available_9547/320px-Right_pointing_double_angle_quotation_mark_sh1_svg_3.png" width="40" height="44" /&gt; One of the new features this new preview release supports is adding field templates and validation to any ASP.NET web page without having to meet these requirements.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9593714" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Dynamic Data Resources</title><link>http://blogs.msdn.com/jimoneil/archive/2009/04/15/dynamic-data-resources.aspx</link><pubDate>Thu, 16 Apr 2009 06:35:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9552100</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/9552100.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=9552100</wfw:commentRss><description>&lt;p&gt;Thanks to all that turned out at the &lt;a href="http://neasp.net"&gt;ASP.NET Professionals User Group&lt;/a&gt; tonight in Waltham to hear about ASP.NET Dynamic Data.&amp;#160; As promised, I’m listing the resources I provided on my closing slide here, and I’ll provide a few pointers to answer some of the questions in a little more detail as well.&lt;/p&gt;  &lt;h2&gt;Resources&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://asp.net/dynamicdata"&gt;http://asp.net/dynamicdata&lt;/a&gt; – main site, including “How Do I” videos&lt;/p&gt;    &lt;p&gt;&lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24887"&gt;ASP.NET Dynamic Data 4.0&amp;#160; Preview 3&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;vNext sample – incorporates functionality targeted for the Dynamic Data 4.0 release (coinciding with .NET 4.0), but compiled with 3.5 SP1 bits, so you can experiment with the functionality now &lt;/li&gt;      &lt;li&gt;Futures project – additional functionality to extend the current release including support for advanced filtering and the application of metadata at runtime &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://designfordata.com"&gt;Design for Data&lt;/a&gt; – Dan Crowell’s community repository of CSS styles for Dynamic Data&lt;/p&gt;    &lt;p&gt;Blogs&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://blogs.msdn.com/scothu"&gt;Scott Hunter&lt;/a&gt; – Dynamic Data Program Manager &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/davidebb"&gt;David Ebbo&lt;/a&gt; – Dynamic Data architect &lt;/li&gt;      &lt;li&gt;&lt;a href="http://csharpbits.notaclue.net/"&gt;Stephen Naughton&lt;/a&gt; – UK developer focusing on Dynamic Data &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/dpeeast/Northeast-Roadshow-ASPNET-Dynamic-Data/"&gt;Screencast&lt;/a&gt; and &lt;a href="http://code.msdn.microsoft.com/northeast/Release/ProjectReleases.aspx?ReleaseId=2483"&gt;slides/demo&lt;/a&gt; from a previous version of the presentation I gave tonight&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Questions&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;Q.&amp;#160; How can I control what properties/columns appear in display mode versus edit mode?&amp;#160; For instance, we added a composite ‘fullname’ property for the List view, but we needed the individual first name and last name field on the edit view.&lt;/p&gt;    &lt;p&gt;A.&amp;#160; To handle this you’ll have to do a little bit of coding; &lt;a href="http://csharpbits.notaclue.net/2008/10/dynamic-data-hiding-columns-in-selected.html"&gt;Stephen Naughton’s blog post&lt;/a&gt; will lead you through this.&amp;#160; The gist of the solution is that you create a new attribute to specify the conditions under which the affected properties/columns should be displayed.&amp;#160; Secondly, you implement your own customized field generator (interface &lt;code&gt;IAutoFieldGenerator&lt;/code&gt;) to examine the attribute and either include or exclude the property/column from the GridView, DetailsView, ListView, etc.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Q.&amp;#160; Can I use mechanisms other than ASP.NET membership to specify roles and permissions for accessing or updating specific properties in the model?&lt;/p&gt;    &lt;p&gt;A.&amp;#160; You can pretty much do whatever you want using a combination of custom attributes and injecting a bit of code at appropriate access points.&amp;#160; Stephen has a &lt;a href="http://csharpbits.notaclue.net/2008/05/introduction-this-project-is-going-to.html"&gt;great series of posts&lt;/a&gt; that provides a lot of detail in setting up an access scheme, one that could leverage the existing ASP.NET membership infrastructure or a mechanism of your own choosing.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Q.&amp;#160; Are there any books on ASP.NET Dynamic Data?&lt;/p&gt;    &lt;p&gt;A.&amp;#160; The only one I found was a &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Secrets-of-Real-World-ASP-NET-Dynamic-Data-Websites.productCd-047045735X.html"&gt;Wrox Blox PDF&lt;/a&gt;, a 34-page downloadable e-book.&amp;#160; I also have the following ASP.NET 3.5 books on hand, &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://www.amazon.com/Professional-ASP-NET-3-5-VB-Programmer/dp/0470187573"&gt;Professional ASP.NET 3.5 in C# and VB&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/books/12001.aspx"&gt;Programming Microsoft ASP.NET 3.5&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://oreilly.com/catalog/9780596518455/toc.html"&gt;Learning ASP.NET 3.5 (Second Edition)&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;but only the latter even mentions Dynamic Data, and doesn’t do much more than describe the feature.&amp;#160; Granted, Dynamic Data was part of the 3.5 &lt;em&gt;Service Pack 1&lt;/em&gt; release, so many of these books may have already been in the publication phase before the feature was nailed down.&amp;#160; There is also &lt;a href="http://oreilly.com/catalog/9780596529567/"&gt;Programming ASP.NET 3.5&lt;/a&gt;, but I don’t have that one handy, so not sure what coverage there is of Dynamic Data.       &lt;br /&gt;      &lt;br /&gt;Hmm, perhaps it’s an opportunity for you to be the next great American author!&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9552100" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category></item><item><title>Dynamic Data @ ASP.NET Professionals User Group</title><link>http://blogs.msdn.com/jimoneil/archive/2009/04/13/dynamic-data-asp-net-professionals-user-group.aspx</link><pubDate>Mon, 13 Apr 2009 16:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9545571</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/9545571.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=9545571</wfw:commentRss><description>&lt;p&gt;I’ll be presenting at the second meeting of the &lt;a href="http://neasp.net"&gt;ASP.NET Professionals User Group&lt;/a&gt; this coming Wednesday in Waltham.&amp;#160; &lt;a href="http://www.pluralsight.com/community/blogs/fritz/"&gt;Fritz Onion&lt;/a&gt; kicked things off last month with &lt;em&gt;“The Changing Face of ASP.NET,”&lt;/em&gt; an overview of what developers need to know before embarking on their next ASP.NET project.&amp;#160; This month we’ll take a deeper dive into one of the technologies Fritz touched on, namely ASP.NET Dynamic Data:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Dynamic Data: From Data to CRUD in Five Minutes (or so)&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;ASP.NET Dynamic Data, introduced with the .NET Framework 3.5 SP1, is a customizable, scaffolding framework for building data-driven ASP.NET web sites. Layering on top of data access technologies like LINQ to SQL and Entity Framework, you can build a CRUD (Create-Read-Update-Delete) site literally in minutes. Additionally, you can make use of new dynamic controls, page and control templates, and custom validation to extend your site far beyond the 'out-of-the-box' experience.&lt;/p&gt; &lt;/blockquote&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="376" align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="83"&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="291"&gt;Wednesday, April 15, 2009&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="83"&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="291"&gt;6:15 – 8:30 p.m          &lt;br /&gt;&lt;font size="1"&gt;(save doing your taxes for &lt;em&gt;after&lt;/em&gt; the meeting!)&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="83"&gt;&lt;strong&gt;Place&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="291"&gt;Microsoft          &lt;br /&gt;201 Jones Road           &lt;br /&gt;Waltham MA 02451&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://neasp.net"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New England ASP.NET Professionals User Group" border="0" alt="New England ASP.NET Professionals User Group" src="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/DynamicDataASP.NETProfessionalsUserGroup_AA9C/image_3.png" width="521" height="80" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9545571" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>TONIGHT! Inaugural Meeting of ASP.NET Professionals</title><link>http://blogs.msdn.com/jimoneil/archive/2009/03/16/tonight-inaugural-meeting-of-asp-net-professionals.aspx</link><pubDate>Mon, 16 Mar 2009 16:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9479482</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/9479482.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=9479482</wfw:commentRss><description>&lt;p&gt;Quick reminder: the first meeting of the newly formed &lt;a href="http://neasp.net"&gt;ASP.NET Professionals User Group&lt;/a&gt; takes place tonight at the Microsoft office at 201 Jones Road in Waltham.&amp;#160; The meeting runs from 6:15 to 8:30.&amp;#160; Regular meetings will occur on the 4th Tuesday of each month.&lt;/p&gt;  &lt;p&gt;Kicking off the new group tonight will be &lt;a href="http://neasp.net/Default.aspx"&gt;Fritz Onion speaking&lt;/a&gt; on &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;The Changing Face of ASP.NET Development&lt;/strong&gt; &lt;/p&gt;    &lt;p&gt;Ajax, MVC, jQuery, DynamicData - things you should know before you start your next ASP.NET project.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/TONIGHTInauguralMeeting.NETProfessionals_C8D7/image_3.png" width="514" height="79" /&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9479482" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/MVC/default.aspx">MVC</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Massachusetts/default.aspx">Massachusetts</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>.NET Framework 3.5 SP1 Update Released</title><link>http://blogs.msdn.com/jimoneil/archive/2009/01/04/net-framework-3-5-sp1-update-released.aspx</link><pubDate>Sun, 04 Jan 2009 08:09:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9270946</guid><dc:creator>joneil</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/9270946.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=9270946</wfw:commentRss><description>&lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 0px 10px 15px; border-left: 0px; border-bottom: 0px" height="118" alt="I got no bugs on me..." src="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/.NETFramework3.5SP1UpdateReleased_233/bug2_6.gif" width="118" align="right" border="0"&gt; This is sort of 'last year's news' since the &lt;a href="http://support.microsoft.com/kb/959209"&gt;KB article&lt;/a&gt; for the update has a date of December 31st, but I suspect many of you weren't all that tuned in to patch releases over the holidays!&lt;/p&gt; &lt;p&gt;The update resolves a &lt;a href="http://support.microsoft.com/kb/958484/"&gt;number of issues&lt;/a&gt;, including some related to topics I've recently presented:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://asp.net/dynamicdata"&gt;ASP.NET Dynamic Data:&lt;/a&gt;&lt;/strong&gt;&amp;nbsp; In the 3.5 SP1 release, 1-to-1 relationships among entities in the Entity Framework were not supported.&amp;nbsp; There was a &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16367"&gt;workaround&lt;/a&gt; posted for this which is now superseded by the &lt;a href="http://support.microsoft.com/kb/959209"&gt;SP1 update&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/bb931106.aspx"&gt;ADO.NET Data Services:&lt;/a&gt;&lt;/strong&gt; Since the ADO.NET Data Services Client did not support creating an entity &lt;strong&gt;and&lt;/strong&gt; setting a reference association (e.g., a foreign key column) &lt;em&gt;in the same step&lt;/em&gt;, you could not create new entities if the underlying database schema represented that relationship as a non-nullable foreign key.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9270946" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/ADO.NET+Data+Services/default.aspx">ADO.NET Data Services</category></item><item><title>Some Upcoming Events</title><link>http://blogs.msdn.com/jimoneil/archive/2008/10/31/some-upcoming-events.aspx</link><pubDate>Fri, 31 Oct 2008 18:51:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9026816</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/9026816.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=9026816</wfw:commentRss><description>&lt;p&gt;I'll be out and about in New England during the first two weeks of November, so just wanted to let you all know of a few events&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table cellspacing="6" cellpadding="2" width="400" align="center" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="185"&gt;Nov 4th, 5 - 8 p.m.&lt;/td&gt; &lt;td valign="top" width="195"&gt;&lt;a href="http://www.ridotnet.com/"&gt;Rhode Island .NET User Group&lt;/a&gt;&lt;br&gt;Roger Williams University&lt;br&gt;Bristol, Rhode Island&lt;br&gt;&lt;br&gt;Topic: ASP.NET Dynamic Data&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="185"&gt;Nov 5th, 1 - 5 p.m.&lt;/td&gt; &lt;td valign="top" width="195"&gt;&lt;a href="http://msdnevents.com/"&gt;MSDN Event&lt;/a&gt; (&lt;a href="http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032388501"&gt;click to register&lt;/a&gt;)&lt;br&gt;Courtyard by Mariott&lt;br&gt;63 Grand Street&lt;br&gt;Waterbury, Connecticut&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="185"&gt;Nov 13th, 1 - 5 p.m.&lt;/td&gt; &lt;td valign="top" width="197"&gt;&lt;a href="http://msdnevents.com/"&gt;MSDN Event&lt;/a&gt; (&lt;a href="http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032388508"&gt;click to register&lt;/a&gt;)&lt;br&gt;Sheraton Boston&lt;br&gt;39 Dalton Street&lt;br&gt;Boston, Massachusetts&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9026816" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Connecticut/default.aspx">Connecticut</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Massachusetts/default.aspx">Massachusetts</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Rhode+Island/default.aspx">Rhode Island</category></item><item><title>Dynamic Data VB Style</title><link>http://blogs.msdn.com/jimoneil/archive/2008/09/05/dynamic-data-vb-style.aspx</link><pubDate>Fri, 05 Sep 2008 08:21:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8925934</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8925934.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8925934</wfw:commentRss><description>&lt;p&gt;Thanks to the &lt;a href="http://www.nevb.com"&gt;New England Visual Basic Professionals User Group&lt;/a&gt; for the invitation to speak on &lt;a href="http://www.asp.net/dynamicdata"&gt;ASP.NET Dynamic Data&lt;/a&gt; this evening in Waltham. AV glitches and the mass migration from MPR-C to MPR-B aside, I hope the content was relevant and useful.&amp;nbsp; This was my first time presenting a VB version of this talk, and I have to comment that it was also the most interactive group I've spoken to on the subject!&amp;nbsp;&amp;nbsp; As a result, while we got through the nuts and bolts, we didn't get to discuss other concerns about deploying Dynamic Data sites like adding business validation rules, addressing security, etc.&lt;/p&gt; &lt;p&gt;To that end, I'm posting the presentation slides on my &lt;a href="http://skydrive.live.com/?mkt=en-us"&gt;SkyDrive&lt;/a&gt;, as well as the VB version of the ASP.NET Routing Demo that we looked at.&amp;nbsp; As always, I'm available via &lt;a href="mailto:joneil@microsoft.com"&gt;e-mail&lt;/a&gt; or through the blog feedback channel if you have any question or comments on these material (or actually on anything in general related to developing on the Microsoft platform).&lt;/p&gt; &lt;p align="center"&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-cd719ef6510408a8.skydrive.live.com/embedrowdetail.aspx/Public/DynamicDataVB.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;I'm also listing the resource links that I showed at the end of the presentation here for future reference:&lt;/p&gt; &lt;p&gt;ASP.NET Dynamic Data Web Site: &lt;a href="http://www.asp.net/dynamicdata"&gt;http://www.asp.net/dynamicdata&lt;/a&gt;  &lt;p&gt;Microsoft Blogs  &lt;ul&gt; &lt;li&gt;Scott Hunter - &lt;a href="http://blogs.msdn.com/scothu"&gt;http://blogs.msdn.com/scothu&lt;/a&gt;  &lt;li&gt;David Ebbo – &lt;a href="http://blogs.msdn.com/davidebb"&gt;http://blogs.msdn.com/davidebb&lt;/a&gt;  &lt;li&gt;Marcin Dobosz – &lt;a href="http://blogs.msdn.com/marcinon"&gt;http://blogs.msdn.com/marcinon&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;External Blogs  &lt;ul&gt; &lt;li&gt;Steven Naughton - &lt;a href="http://csharpbits.notaclue.net/"&gt;http://csharpbits.notaclue.net/&lt;/a&gt;  &lt;li&gt;Matt Berseth - &lt;a href="http://mattberseth.com/"&gt;http://mattberseth.com&lt;/a&gt;  &lt;li&gt;Josh Heyse - &lt;a href="http://blogs.catalystss.com/blogs/josh_heyse"&gt;http://blogs.catalystss.com/blogs/josh_heyse&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8925934" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Massachusetts/default.aspx">Massachusetts</category></item><item><title>Dynamic Data in Waltham</title><link>http://blogs.msdn.com/jimoneil/archive/2008/08/30/dynamic-data-in-waltham.aspx</link><pubDate>Sun, 31 Aug 2008 06:21:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8912013</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8912013.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8912013</wfw:commentRss><description>&lt;p&gt;This coming Thursday, September 4th, I'll be presenting on &lt;a href="http://www.asp.net/dynamicdata"&gt;ASP.NET Dynamic Data&lt;/a&gt; to the &lt;a href="www.nevb.com"&gt;New England Visual Basic Professional User Group&lt;/a&gt; at Microsoft's Waltham office, 201 Jones Road (&lt;a href="http://maps.live.com/OneClickDirections.aspx?mkt=en-us&amp;amp;rtp=~pos.r1w6zd91tfhy&amp;amp;FORM=LLMP"&gt;one-click directions&lt;/a&gt;).&amp;nbsp; I started working with this technology at the beginning of the summer, and now that's its been officially released as part of .NET 3.5 SP1, there's definitely been some momentum and new folks blogging about and extending the technology.&amp;nbsp; If you haven't looked at it yet, this is a great way to get an introduction and hit the ground running!&amp;nbsp; Hope to see you there.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8912013" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Massachusetts/default.aspx">Massachusetts</category></item><item><title>Caching in ASP.NET Dynamic Data</title><link>http://blogs.msdn.com/jimoneil/archive/2008/07/25/caching-in-asp-net-dynamic-data.aspx</link><pubDate>Sat, 26 Jul 2008 05:12:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8773859</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8773859.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8773859</wfw:commentRss><description>&lt;p&gt;One question that came up at my presentation to the &lt;a href="http://www.mainebytes.org/"&gt;Maine Bytes&lt;/a&gt; user group this week centered around the degree to which &lt;a href="http://asp.net/dynamicdata"&gt;Dynamic Data&lt;/a&gt; will leverage ASP.NET caching.&amp;nbsp; Given that the UI of a Dynamic Data site more or less comprises a small set of page and control templates, and it's often just the data that changes as you navigate, it would seem to be a great opportunity to cache the presentation markup.&amp;nbsp; On the other hand, the on-the-fly nature of the page generation led me to suspect that there may not be much opportunity after all.&amp;nbsp; At the time I didn't have as definitive an answer as I'd like... so I went to the source of all that is right and good -- engineering!&lt;/p&gt; &lt;p&gt;As explained to me, since the default templates are all wrapped in an AJAX UpdatePanel, the pages are pretty much going be re-rendered on every postback.&amp;nbsp; If you use a tool like &lt;a href="http://www.fiddler2.com/Fiddler2/ "&gt;Fiddler&lt;/a&gt;, you can see empirically that this indeed is the case.&amp;nbsp; Now some of the ways to avoid this is to move to more of an AJAX approach where client-processing can be leveraged more effectively, and that's a direction that the Dynamic Data team may look at as the feature matures.&amp;nbsp; In the meantime, since it's ultimately just ASP.NET Web Forms under the covers, caching techniques and strategies that are appropriate for traditional, non-Dynamic Data ASP.NET sites would still be applicable here.&lt;/p&gt; &lt;p&gt;Now another aspect of caching is that of the data model and its attributes.&amp;nbsp; The model *is* cached when registered via the &lt;tt&gt;MetaModel.RegisterContext&lt;/tt&gt; method in the &lt;tt&gt;Application_Start&lt;/tt&gt; event.&amp;nbsp; That's great in terms of performance, given how frequently the model is consulted as the site pages are generated; however, a drawback (perhaps affecting just more advanced scenarios) is that you can't modify the model dynamically (such as by using a custom metadata provider) because the cache is not refreshed once initialized.&amp;nbsp; Check out &lt;a href="http://blogs.msdn.com/marcinon/archive/2008/05/22/dynamic-data-samples-custom-metadata-providers.aspx"&gt;Marcin's post on that topic&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8773859" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Maine/default.aspx">Maine</category></item><item><title>Dynamic Data Just Got Cooler</title><link>http://blogs.msdn.com/jimoneil/archive/2008/07/25/dynamic-data-just-got-cooler.aspx</link><pubDate>Sat, 26 Jul 2008 04:13:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8773677</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8773677.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8773677</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/scothu/archive/2008/07/21/many-updates-on-dynamic-data.aspx"&gt;Scott Hunter&lt;/a&gt;, the Program Manager for ASP.NET Dynamic Data, announced the Dynamic Data for MVC Preview available on &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=15459"&gt;CodePlex&lt;/a&gt;.&amp;nbsp; This takes the powerful scaffolding and data validation models that we see applied to Web Form applications in .NET 3.5 SP1 to the MVC framework.&amp;nbsp; Note it's a very early preview so is not as functional as the Web Forms version is today, but it's an exciting step nonetheless.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8773677" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/MVC/default.aspx">MVC</category></item><item><title>Dynamic Data References</title><link>http://blogs.msdn.com/jimoneil/archive/2008/07/19/dynamic-data-references.aspx</link><pubDate>Sun, 20 Jul 2008 00:25:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8756300</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8756300.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8756300</wfw:commentRss><description>&lt;p&gt;Thanks to David Hockenberry, Mike Pawelek, and the &lt;a href="http://www.wnydnug.org"&gt;Western New York .NET Users Group&lt;/a&gt; for hosting me last Wednesday.&amp;nbsp; I had a great time meeting many of you while presenting on the new &lt;a href="http://www.asp.net/dynamicdata"&gt;ASP.NET Dynamic Data&lt;/a&gt; feature in .NET 3.5 SP1.&amp;nbsp; As promised, I wanted to provide some of the references I mentioned during the talk; I'll be uploading the presentation to my SkyDrive within the next week or so.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The go-to reference is the ASP.NET site:&amp;nbsp; &lt;a href="http://www.asp.net/dynamicdata"&gt;http://www.asp.net/dynamicdata&lt;/a&gt;&lt;br&gt; &lt;li&gt;You definitely want to use the &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14474"&gt;latest bits of Dynamic Data&lt;/a&gt; versus what was part of the beta.&amp;nbsp; Note, these were released &lt;strong&gt;*yesterday*, &lt;/strong&gt;so I've got some catching up to do myself!&lt;br&gt; &lt;li&gt;I recommend &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14474"&gt;downloading the documentation&lt;/a&gt; for the latest bits; however, if you are content with the original SP1 beta download, you can access the &lt;a href="http://vs2008sp1docs.msdn.microsoft.com/en-us/ms336422.aspx"&gt;MSDN documentation on-line&lt;/a&gt; as well.&lt;br&gt; &lt;li&gt;&lt;strong&gt;Bloggers&lt;/strong&gt;:&amp;nbsp; &lt;a href="http://blogs.msdn.com/scothu/default.aspx"&gt;Scott Hunter&lt;/a&gt; (Program Manager), &lt;a href="http://blogs.msdn.com/marcinon/"&gt;Marcin Dobosz&lt;/a&gt; (development), &lt;a href="http://blogs.msdn.com/davidebb"&gt;David Ebbo&lt;/a&gt; (development), &lt;a href="http://csharpbits.notaclue.net"&gt;Stephen Naughton&lt;/a&gt; (community)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Look for another exciting announcement regarding ASP.NET Dynamic Data early next week.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8756300" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/New+York/default.aspx">New York</category></item><item><title>Buffalo Bound</title><link>http://blogs.msdn.com/jimoneil/archive/2008/07/11/buffalo-bound.aspx</link><pubDate>Sat, 12 Jul 2008 05:57:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8722402</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8722402.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8722402</wfw:commentRss><description>&lt;p&gt;I'm heading to Buffalo, New York, next Wednesday (July 16th) for the &lt;a href="http://wnydnug.org/Meetings/tabid/54/Default.aspx"&gt;Western New York .NET User Group meeting&lt;/a&gt;.&amp;nbsp;&amp;nbsp; The topic is &lt;a href="http://asp.net/dynamicdata"&gt;ASP.NET Dynamic Data&lt;/a&gt;, a really RAD (and rad!) addition to the upcoming .NET 3.5 SP1 release. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table cellspacing="0" cellpadding="1" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="center" align="middle" width="59" rowspan="4"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/BuffaloBound_142AE/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 25px 0px 0px; width: 129px; height: 106px; border-right-width: 0px" alt="image" src="http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/BuffaloBound_142AE/image_thumb.png" align="middle" border="0"&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="79" height="15"&gt;&lt;strong&gt;Date&lt;/strong&gt;:&lt;/td&gt; &lt;td valign="top" height="15"&gt;July 16, 2008&lt;br&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" height="15"&gt;&lt;strong&gt;Time&lt;/strong&gt;:&lt;/td&gt; &lt;td valign="top" height="15"&gt;6 - 8:30 p.m.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" height="29"&gt;&lt;strong&gt;&lt;a href="http://maps.live.com/OneClickDirections.aspx?rtp=%7epos.r4c64m8dw5d6_726+Exchange+St%2c+Buffalo%2c+NY+14210-1484___a_&amp;amp;rsd=42.8925508260727_-78.8921892642975_AVf%2bAyAOAAAAfheYACkCAAA%3d_the+north+(via+Gov+Thomas+E+Dewey+Thruway+S+%2f+New+York+State+Thruway+%2f+I-190)%7e42.7742090821266_-78.8592785596848_AVf%2bAyAOAAAA1heYAHUEAAA%3d_the+south+(via+Lake+Shore+Rd)%7e42.8822404146194_-78.7694004178047_AVf%2bAyAOAAAA1ReYAIIAAAA%3d_the+east+(via+Gov+Thomas+E+Dewey+Thruway+W+%2f+New+York+State+Thruway+W+%2f+I-90+W)%7e42.7099406719208_-78.9082986116409_AVf%2bAyAOAAAA3BeYACEAAAA%3d_the+west+(via+Gov+Thomas+E+Dewey+Thruway+E+%2f+New+York+State+Thruway+E+%2f+I-90+E)&amp;amp;mkt=en-us&amp;amp;FORM=LLMP"&gt;Location:&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" height="29"&gt;&lt;a href="http://knowledgeair.com/"&gt;KnowledgeAir &lt;/a&gt;&lt;br&gt;Larkin Building, Suite 628, 726 Exchange Street&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="style11" valign="top"&gt;&lt;strong&gt;Food&lt;/strong&gt;:&lt;/td&gt; &lt;td valign="top"&gt;Pizza and pop (Courtesy of &lt;a href="http://www.technisource.com/"&gt;Technisource&lt;/a&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Be sure to &lt;a href="mailto:events@wnydnug.org?subject=RSVP%20for%20July%2016th%20meeting"&gt;RSVP&lt;/a&gt; so the folks there have an accurate count for the munchies&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8722402" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/New+York/default.aspx">New York</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/User+Group/default.aspx">User Group</category></item><item><title>Constraints in ASP.NET Routing</title><link>http://blogs.msdn.com/jimoneil/archive/2008/07/07/constraints-in-asp-net-routing.aspx</link><pubDate>Tue, 08 Jul 2008 00:36:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8704288</guid><dc:creator>joneil</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimoneil/comments/8704288.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimoneil/commentrss.aspx?PostID=8704288</wfw:commentRss><description>&lt;p&gt;ASP.NET routing is a new feature incorporated in the upcoming .NET 3.5 Service Pack 1 release.&amp;nbsp; While closely associated with the implementation of &lt;a href="http://www.asp.net/mvc"&gt;ASP.NET MVC&lt;/a&gt; (Model-View-Controller), it's really a separate piece of functionality consolidated in two assemblies&lt;/p&gt; &lt;ul&gt; &lt;li&gt;System.Web.Routing, and&amp;nbsp; &lt;li&gt;System.Web.Abstractions&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I've been looking at routing recently as part of &lt;a href="http://www.asp.net/dynamicdata"&gt;ASP.NET Dynamic Data&lt;/a&gt;, and soon found myself intrigued by the various permutations you can cook up.&amp;nbsp; While there are quite a few &lt;a href="http://msmvps.com/blogs/luisabreu/archive/2008/07/04/the-routing-series.aspx"&gt;blog posts&lt;/a&gt; and&amp;nbsp; &lt;a href="http://quickstarts.asp.net/3-5-extensions/mvc/ASPNETRouting.aspx"&gt;tutorials&lt;/a&gt; on the routing feature, I haven't found many (yet) that talk much about the new constraint capabilities introduced in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=92F2A8F0-9243-4697-8F9A-FCF6BC9F66AB&amp;amp;displaylang=en"&gt;ASP.NET MVC Preview 3&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;In a nutshell, ASP.NET routing allows you to set up a RouteTable consisting of URL 'templates' against which the System.Web.UrlRoutingModule (referenced in web.config) compares each requested URL to see if there is a match.&amp;nbsp; If there is, the HTTP request is handed off to a specific implementation of an IHttpHandler for servicing.&amp;nbsp; ASP.NET MVC comes with its own implementation of an IHttpHandler (System.Web.Mvc.MvcRouteHandler), but where's the fun in that... so that's when I decided to try my own hand.&lt;/p&gt; &lt;p&gt;As I mentioned, each route is really a template. For instance, a URL of &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;dayinhistory/{year}/{month}/{day} &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;would match things like&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;http://mysite.com/dayinhistory/2000/1/1&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;and assign values to "year", "month", and "day" in a Values collection that can be accessed within the route handler.&amp;nbsp; Unfortunately, it would also match URLs like&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;http://mysite.com/dayinhistory/red/sox/rock&lt;/p&gt; &lt;p&gt;http://mysite.com/dayinhistory/2000/56/40&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;neither of which represents a valid date.&lt;/p&gt; &lt;p&gt;While each route definition can be initialized with a collection of Constraints, prior to ASP.NET MVC Preview 3, the constraint itself could only be a string representing a regular expression.&amp;nbsp; That works for some scenarios, but it doesn't really help when you have more complex validation, such as date checking. &lt;/p&gt; &lt;p&gt;With Preview 3, a new interface, IRouteConstraint, was added to System.Web.Routing and vastly expands your constraint-checking capabilities.&amp;nbsp; Now you can specify a constraint not only as string (to be interpreted as a regular expression, as in the past) but also as a custom class implementing this new interface.&amp;nbsp; IRouteConstraint mandates implementation of a Match method, within which you can do pretty much anything and then simply return true if the validation succeeds or false if it fails.&amp;nbsp; &lt;/p&gt; &lt;p&gt;As you can see from the Match signature below, you have access to the selected route, the substituted URL parameters, and the HTTP context object to perform the validation.&amp;nbsp; The routeDirection parameter is an enumeration that tells you whether the method is executing on an 'incoming' basis, that is the UrlRoutingModule is trying to find a match for a requested URL, or on an 'outgoing' basis, in which you're requesting a URL to be created to match a route - generally in response to invoking GetVirtualPath to build URLs for links within your own pages.&lt;/p&gt; &lt;div&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Match(HttpContextBase httpContext, Route route, 
     &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; parameterName, RouteValueDictionary values, RouteDirection routeDirection)
&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;As an example, here's a simple class I created to validate the date URL pattern mentioned above.&amp;nbsp; It simply tries to create a date from the parameter values extracted from the URL, and if that fails (i.e., an exception is thrown), the validation fails.&lt;/p&gt;
&lt;div&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; DateConstraintValidator : IRouteConstraint
{
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Match(HttpContextBase httpContext, Route route, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; parameterName, 
                      RouteValueDictionary values, RouteDirection routeDirection)
    {
        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
        {
            DateTime potentialDate = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(
                Int32.Parse(values[&lt;span style="color: #006080"&gt;"year"&lt;/span&gt;].ToString()), 
                Int32.Parse(values[&lt;span style="color: #006080"&gt;"month"&lt;/span&gt;].ToString()), 
                Int32.Parse(values[&lt;span style="color: #006080"&gt;"day"&lt;/span&gt;].ToString()));
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
        }
        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception)
        {
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
        }
    }
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now, my route definition in global.asax looks like this (DateUrlRouter is my custom IHttpHandler that instantiates a single ASPX page to display the date in a Calendar control):&lt;/p&gt;
&lt;div&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;Route r = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Route(&lt;span style="color: #006080"&gt;"dayinhistory/{year}/{month}/{day}"&lt;/span&gt;, 
    &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,                
    &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RouteValueDictionary { {&lt;span style="color: #006080"&gt;"year"&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateConstraintValidator()} }, 
    &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateUrlRouter());
routes.Add(r);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While I only have one constraint on "year", that's really enough, because the Match method has access to all of the substituted values as one of its parameters.&amp;nbsp; (Actually, it doesn't really matter what value is supplied for the string "year" here, since the constraint reference will come along for the ride anyway!)&lt;/p&gt;
&lt;p&gt;If you're interested in seeing this all in action, check out my sample on Skydrive:&lt;/p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-cd719ef6510408a8.skydrive.live.com/embedrowdetail.aspx/Public/Blog/20080707|_routing.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8704288" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimoneil/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><category domain="http://blogs.msdn.com/jimoneil/archive/tags/MVC/default.aspx">MVC</category></item></channel></rss>