Today I decided to make a small ASP.NET MVC application which would add, edit, delete, and list US states which resided in a SQL Server Express database. I am a veteran in ASP.NET Web Forms development, so I wanted to see what MVC is like. I create business objects/models everyday, so understanding models was easy enough. The tricky part for me was creating and understanding how controllers and views interact with each other.
1) I liked the clean separation between controller/view/models. Basically this is required when using MVC. I’ve already been accustomed to separating layers, so this wasn’t new to me, but seeing how the MVC Framework has this built in was refreshing.
2) When I created a new MVC Web Application, it automatically prompted to create a Test project. I thought that was pretty neat. I’m not experienced in creating automated test yet, but I’m sure I’ll get there soon and just seeing the parallelism with MVC and testing was impressive.
3) REST (Representational State Transfer) URLs was interesting. Apparently you can configure how requests are mapped to controllers in the Global.asax. I didn’t get into this much as I took the defaults, but simply editing a state looked like such: “/states/Edit/1”. No more mapping to a template/resource.
4) You can generate a view straight from the controller by right-clicking when you return an ActionResult. Visual Studio will then prompt/ask you what kind of view you want to make and you can also have it create a strongly typed view so that you can access the model’s properties. So the framework can assist in starting a view pretty quickly for you.
5) Not having view state and post backs was really nice. The rendered HTML was very clean.
6) I was confused at times as to how the framework knew what to pass to controller routines on a form post and also how id’s work. What if you have more than 1 property that makes up the id? I imagine this would come with time.
Overall I enjoyed the initial experience and it seemed very structured. I feel that one day doesn’t do it justice as MVC is a bit more complex than web forms.
1) Scott Guthrie’s NerdDinner.com Chapter: Scott Guthrie wrote a chapter in Professional ASP.NET MVC 1.0 in which he walks you through step-by-step in creating an MVC web application. You can download the chapter in PDF and also download the source code if needed.
2) Simple E-Commerce Storefront Application: This is another Scott Guthrie example, however this example has some nice architecture diagrams that go along with it to explain what’s going on a bit more.
MVCTest_Soln.zip (891.39 kb)
ASP.NET MVC Overview Part 1 (General ASP.NET MVC Overview)
ASP.NET MVC Overview Part 2 (Advantages of MVC and Web Forms)
ASP.NET MVC First Impressions