How to add Dynamic Data to an Existing Web Application

Yesterday I posted about how to add Dynamic Data to an existing website and I got some feedback about how to add Dynamic Data to an existing web application. Web application projects work a little different the website projects, you can check out the differences here: https://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx.

1) Create a dummy Dynamic Data web application project. Copy the DynamicData directory from it into your existing web application. You should also copy the Site.css and Site.master files. The Default.aspx file is optional, it display a menu of tables in your data model, this file is only needed if you plan on having such a menu in your application. IMPORTANT: Web application projects have namespaces in their code behind files, you may want to change the namespaces of the copied in files to match the namespace of your existing project.  

2) You can copy the Global.asax file or if you already have such a file you can just add the model registration and url routes as below to the

<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.DynamicData" %>

void Application_Start(object sender, EventArgs e) {

MetaModel model = new MetaModel();

model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });

routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {
    Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
    Model = model
});

}

3) Right click on the References node in the solution explorer and select "Add Reference". In the dialog that opens up you need to select System.ComponentModel.DataAnnotations, System.Web.Abstractions, System.Web.DynamicData and System.Web.Routing.

4) In the <compilation> section in web.config add the following assemblies:

<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

5) In the <pages>/<controls> section add the following new tag prefix:

<add tagPrefix="asp" namespace="System.Web.DynamicData" assembly="System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

6) Enable the new ASP.NET Routing feature:

IIS 5/6/Casini

In the <httpModules> section add the following new module:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

IIS 7

In the <system.webServer>/<modules> section add the following:

<remove name="UrlRoutingModule" />

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

In the <system.webServer>/<handlers> section add the following:

<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

 

At this point Dynamic Data should be functional. To enable it see the steps at the bottom of yesterdays post.

Comments

  • Anonymous
    June 24, 2008
    PingBack from http://wordnew.acne-reveiw.info/?p=2710

  • Anonymous
    June 27, 2008
    I posted back in May about the ability to combine standard ASP.NET webforms pages and ASP.NET Dynamic

  • Anonymous
    July 02, 2008
    Listen to the Show! When first introduced to Dynamic Data , developers often write the technology off

  • Anonymous
    October 05, 2008
    Below are a list of questions directly from my geekSpeak session earlier this week. Q: How do you hide a class from the scaffolding? A: Use the ScaffoldTableAttribute on the class in your data model you want to hide. [ ScaffoldTable ( false )] public

  • Anonymous
    October 05, 2008
    Below are a list of questions directly from my geekSpeak session earlier this week. Q: How do you hide

  • Anonymous
    December 29, 2008
    Instead of routes.Add(), I had to use RouteTable.Routes.Add().

  • Anonymous
    January 29, 2009
    Shouldn't you also add <remove name="UrlRoutingHandler" /> under <system.webServer>/<handlers> section?

  • Anonymous
    May 15, 2009
    https://www.yoursite.com/DomainRegistration/Purchase.Asp

  • Anonymous
    July 21, 2009
    Be aware when copying page and control files!!! You can get "...does not exist in the current context" compiler errors. Reason for this is that the designer files are not included in the project automatically. http://forums.asp.net/t/1437727.aspx

  • Anonymous
    October 08, 2010
    Thanks Scott, this is what i have been looking for, nice well explained article :)

  • Anonymous
    December 04, 2011
    The comment has been removed