Learn More





DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

DNN8 Development Technique Comparison: Webforms, MVC, and SPA


Mmmmmm....  southern home-style cooking...  I must have been hungry in the spring of 2013 when I came up with the concept of developing a restaurant menu module as a sample for the module development class that I taught at the Southern Fried DNN conference in Charlotte.  I thought it was a good sample application to train developer who were new to DNN because it illustrated fundamental aspects of a real world module: data access operation (create, read, delete, update), module settings, and image upload.

Fast forward to early 2016 and I found myself in need of a demonstration to teach students at my module development class at DNNCon Baltimore.  I decided to dust off my restaurant module and give it an update.  I wrote it two more times using the new DNN8 development techniques, MVC and SPA.  Then I posted all 3 modules, an updated version of the original Webforms module and the new MVC and SPA modules, on my github page.

Which technique do I use?

What are the reasons you would want to use one development technique over the other? I was able to implement the Restaurant Menu module with all three techniques.  Let's discuss...


I'm already familiar with this technique - Ok, that's not really a good reason, but many developers may continue to build Webforms modules just because they haven't updated their skill-sets and the DNN8 platform still supports this.

I am building a module for DNN8 that still needs to be compatible with DNN7 - If you are a vendor building modules for anyone, you still need to support the older versions.  At some point, you may want to branch your code and move to a new DNN8 technique, but for now you are sticking with Webforms.

I like leveraging prebuilt Usercontrols like dnnLabel and dnnFilePicker - This is the nice thing about Webforms; the ability to compose our pages of other components.  Sure we can do it with Partial Views in MVC and directives and partial views in a SPA/Angular modules, but many useful webforms usercontrols are currently built for us in the DNN core.


Forces you to use client-centric design - What does that mean? Since our module controls must be .html files, we have no choice but to put all of our business logic into the javascript and framework services. That's what a lot of us are doing with our webforms modules anyway.

Responsive UI - I'm not talking about mobile responsive here, although in my restaurant module, I did base the new SPA version on Bootstrap. What I mean here is not posting back the page makes the UI much snappier. And let's dispel the myth that the DNN SPA technique will automatically make your module a "Single Page Application". It won't; you need to use Angular partials or Knockout templates to achieve that moniker.


You can build complex business logic and unit tests - I see this as the strongest point for MVC development; building unit tests for your MVC controllers. In the Restaurant Menu MVC module, I provide a sample unit test to get you started.

Familiar web development pattern - To old-school ASP.NET developers like me, webforms is comfortable. But to people used to other technologies, the MVC pattern is more comfortable and familiar. I was recently training a young new developer at Bluebolt on Webforms and it was completely foreign to him. But he already knew MVC, NodeJS, Angular and other modern technolgies and patterns.

Free Code?

Yes, if you missed my link in the article's introduction, get the Restaurant Menu Module in its 3 flavors on my github page.


Will Strohl
Great article, Scott. Thanks for sharing your thoughts with the community.
Will Strohl Monday, May 02, 2016 9:18 AM (link)

Comment Form

Only registered users may post comments.


2sic Daniel Mettler (124)
Aderson Oliveira (15)
Alec Whittington (11)
Alex Shirley (10)
Andrew Nurse (30)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (22)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (203)
Chris Paterra (55)
Clinton Patterson (28)
Cuong Dang (21)
Daniel Bartholomew (2)
Dave Buckner (2)
David Poindexter (3)
David Rodriguez (2)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (74)
Geoff Barlow (6)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (270)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matthias Schlomann (15)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Mike Horton (19)
Mitchel Sellers (28)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Peter Donker (52)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (2)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (37)
Will Strohl (163)
William Severance (5)
Try Evoq
For Free
Start Free Trial
a Demo
See Evoq Live
Need More Information?