Thursday, July 29, 2010 3:53 PM Vimpyboy

Introducing ASP.NET MVC 3

What is ASP.NET MVC 3?

In march, ASP.NET MVC 2 was released. It contains many new features such as data annotations, areas, validation and other things. These functions makes it easier to create larger projects where we easily can set annotations for the models, and also split the projects into different sections.

There are though some things that we want to change, and we often have to repeat ourselves, like when using ActionFilter for all controls and action methods We could solve this using ASP.NET MVC 2, but that requires extra work from us since there isn´t any kind of built-in support for that.

The solution for these and many other problems exists in ASP.NET MVC 3, which is released as a preview.

So, what are the biggest new features and changes in this firs preview of ASP.NET MVC 3?

  • Razor, a new ViewEngine for ASP.NET MVC. Razor also works for ASP.NET Web Pages.
  • ASP.NET MVC 3 requires .NET 4.0 and does not suport .NET 3.5 anymore.
  • Global ActionFilters, which make it possible to register action filters for all controllers and method in one place.
  • Dynamic View and ViewModel properties. In previous versions of ASP.NET we had to useViewData, which is a dictionary with strings and objects. Now we have dynamic properties instead.
  • The possibility to choose View Engine when creating a new view.
  • Support for injecting code using a built-in Service Locator.
  • JsonValueProviderFactory which makes it possible to post Json directly to a page and retrieve it as a custom type.
  • Support for new data annotations in .NET 4.0.
  • Support for IValidateObject in our models, so we can use custom validation for the values directly from the model.
  • New types of ActionResult.

I am going to talk about most of these new features here, and the other things will be published later in separate articles.

Create your first ASP.NET MVC 3 project

When ASP.NET MVC 3 is installed, we can see some new project types in Visual Studio 2010. When we choose to create a new project, it will look like this:

1 - New project

We can see three new project templates here: ”ASP.NET MVC 3 Web Application (ASPX)”, ”ASP.NET MVC 3 Web Application (Razor)” and ”ASP.NET MVC 3 Empty Web Application”. If we create a project using ASPX, we will get the same views as in earlier versions, which are using WebFormViewEngin, but if we choose to use Razor, we will use this new View Engines instead. In this case I choose to create a Razor project.

What we have now is an ordinary ASP.NET MVC project with folders for Models, Views and Controllers. There are some changes though, instead of aspx files in the views folder, we have cshtml files:

2 - ViewsCshtml

Cshtml is the file extension for views using the Razor vew engine. We can still use aspx files, but then the WebFormViewEngine will be used instead.

If we open View\Home\Index.cshtml we will see this:

@inherits System.Web.Mvc.WebViewPage
 
@{
    View.Title = "Home Page";
    LayoutPage = "~/Views/Shared/_Layout.cshtml";
}
 
<h2>@View.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>

There is no intellisense or syntax highlighting for Razor in Preview 1, so if you want t use it, you will still havet o use aspx files until it´s there.

If we take a look at the code, we can find some interesting things. First, we have @inherits on the first line. We use that to declare which type the view uses. In ASP.NET MVC 2 we had ViewPage or ViewPage<T>, and with Razor we now have WebViewPage or WebViewPage<T>. If we use aspx files with ASP.NET MVC 3, they will still use ViewPage.

After that we have a code block with two lines of code. On the first line we set View.Title, and on the other we set LayoutPage. View is the dynamic type we use instead of ViewData, and LayoutPage is used to set the master page we want to use.

After the code block we display View.Message, wich is a ViewData object.

How come we set one View value, and then display another?

If we take a look at HomeController.cs, we can see this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
namespace MvcRazor.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewModel.Message = "Welcome to ASP.NET MVC!";
 
            return View();
        }
 
        public ActionResult About()
        {
            return View();
        }
    }
}

Here is ViewModel.Message set. ViewModel is exactly the same as View, which means we use it instead of ViewData. This is the value we use in the view.

But we also set View.Title without displaying the value in the view. What happens here is that the value is sent to the LayoutPage which looks like this:

@inherits System.Web.Mvc.WebViewPage
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>@View.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>
 
<body>
    <div class="page">
 
        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
 
            <div id="logindisplay">
                @Html.Partial("_LogOnPartial")
            </div>
 
            <div id="menucontainer">
 
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                </ul>
 
            </div>
        </div>
 
        <div id="main">
            @RenderBody()
            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html>

Here are we reading the value from View.Title for the header in the page. The value have been sent from the view to the masterpage, just like we could do with a ContentPlaceHolder before.

In the LayoutPage we use standard helpers for ASP.NET MVC, just like we use to do before. There are some new things as well though, like the RenderBody() which is used to specify where the view should be rendered.

If we click on F5 to start the project, we will get this:

3 - Start site

This site looks just like it dit in earlier versions of ASP.NET MVC, and we can now start buidling the page.

Create a guestbook

If we want to get feedback from our visitors, we could have a guestbook on the page. I am going to create a new guestbook from scratch, using ASP.NET MVC 3 with Razor, and store the values in a SQL Server Compact 4 database created with Entity Framework 4 CTP 4.

First we will need to create a model. We give the model the name GuestbookEntry and create it like this:

using System;
using System.ComponentModel.DataAnnotations;
 
namespace MvcRazor.Models
{
    public class GuestbookEntry
    {
        public int Id { get; set; }
 
        [StringLength(25)]
        [Required]
        public string Name { get; set; }
 
        [DataType(DataType.EmailAddress)]
        [Required]
        public string Email { get; set; }
 
        [Required]
        public string Message { get; set; }
 
        public DateTime Posted { get; set; }
    }
}

To create a database I first create a new folder named Code, where I create a new class file with the name DataContext. I add the following code:

using System.Data.Entity;
using MvcRazor.Models;
 
namespace MvcRazor.Code
{
    internal class DataContext : DbContext
    {
        public DbSet<GuestbookEntry> Guestbook { get; set; }
    }
}

To use the new functions in Entity Framework 4 CTP 4, we need to add a reference to the dll for the CTP. Thanks to the new Code-First functionality, we will be able to use our model directly in our database without the need of writing custom SQL.

To create the database automatically if it´s not existing already, we will have to add this to Application_Start in global.asax:

Database.SetInitializer<DataContext>(new RecreateDatabaseIfModelChanges<DataContext>());

The database will now be recreated everytime we change the model.

The last thing we need before using the model is to add a key in web.config with the connection string to the database.

<add name="DataContext" connectionString="Data Source=|DataDirectory|DataContext.sdf" providerName="System.Data.SqlServerCe.4.0" />

Since the database doesn´t exist yet, it will be created the first time we run the application.

How you can use DataContext to work with the database

To work with the database we need to create controllers which sends the data between our database and views. I am now going to create a new GuestbookController where I check the box for creating additional action methods:

4 - Add controller

Since we don´t have all the functionality in our guestbook, I will remove unnecessary methods, and get this:

using System.Web.Mvc;
using MvcRazor.Code;
using MvcRazor.Models;
 
namespace MvcRazor.Controllers
{
    public class GuestbookController : Controller
    {
        DataContext _ctx = new DataContext();
 
        // GET: /Guestbook/
        public ActionResult Index()
        {
            return View();
        }
 
        // GET: /Guestbook/Create
        public ActionResult Create()
        {
            return View();
        } 
 
        // POST: /Guestbook/Create
        [HttpPost]
        public ActionResult Create(GuestbookEntry entry)
        {
            try
            {
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}

Outside of the methods, I create a new instance of DataContext, which will be used by the different methods to work with the data.

In the index method we will have a list with all entries in the guestbook. Since we have a reference to an ObjectContext (in this case it´s DataContext), it will be really easy to accomplish this The index method will look like this:

public ActionResult Index()
{
    return View(_ctx.Guestbook.ToList());
}

We also updates the Create method so we can save new entries:

// POST: /Guestbook/Create
[HttpPost]
public ActionResult Create(GuestbookEntry entry)
{
    try
    {
        entry.Posted = DateTime.Now;
 
        _ctx.Guestbook.Add(entry);
        _ctx.SaveChanges();
 
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

It´s really easy to work with the data using our DataContext, and now we have everything we need to list and create entries in our guestbook.

The next step is to create the views, so we start with the index view. It´s a generic view (GuestbookEntry), and it is going to list the entries using the Razor view engine. Right-click inside of the Index method and choose Add View. If you are familiar with ASP.NET MVC 2 or the previous version, you will see some changes here:

5 - Add view

The new feature here is the ability to choose which view engine to use, and automatically use the corresponding T4 template to render it. If we click on Add, the view will be generated. There are though some properties we don´t want to show here, such the links and Id, so we delete them. The result is:

@inherits System.Web.Mvc.WebViewPage<IEnumerable<MvcRazor.Models.GuestbookEntry>>
 
@{
    View.Title = "Guestbook";
    LayoutPage = "~/Views/Shared/_Layout.cshtml";
}
 
    <h2>Index</h2>
 
    <table>
        <tr>
            <th>
                Name
            </th>
            <th>
                Email
            </th>
            <th>
                Message
            </th>
            <th>
                Posted
            </th>
        </tr>
 
    @foreach (var item in Model) {
    
        <tr>
            <td>
                @item.Name
            </td>
            <td>
                @item.Email
            </td>
            <td>
                @item.Message
            </td>
            <td>
                @String.Format("{0:g}", item.Posted)
            </td>
        </tr>
    
    }
 
    </table>
 
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>

The view looks like the start page, but now we have a model, which we can see on the first line. We also use Razor instead of the old code blocks (<%%>).

We will now create a view for adding entries, so we choose Create instead of List for the new view.

We will remove the Id and Date fields for this new view, so it looks like this:

@inherits System.Web.Mvc.WebViewPage<MvcRazor.Models.GuestbookEntry>
 
@{
    View.Title = "Create";
    LayoutPage = "~/Views/Shared/_Layout.cshtml";
}
 
<h2>Create</h2>
 
    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
 
        <fieldset>
            <legend>Fields</legend>
            
            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
            
            <div class="editor-label">
                @Html.LabelFor(model => model.Email)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Email)
                @Html.ValidationMessageFor(model => model.Email)
            </div>
            
            <div class="editor-label">
                @Html.LabelFor(model => model.Message)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Message)
                @Html.ValidationMessageFor(model => model.Message)
            </div>
            
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
 
    }

If we press F5, we will see this:

6 - View page

We have now created a very simple guestbook where the visitors can create new entries. The database is auto-generated, so we will not have to think about that.

If we go to the create view and posts the form without the correct values, we can see that we also got validation based on our data annotations for the model.

Filed under: , ,

Comments

# Twitter Trackbacks for Introducing ASP.NET MVC 3 - Mikael S??derstr??m [asp.net] on Topsy.com

Pingback from  Twitter Trackbacks for                 Introducing ASP.NET MVC 3 - Mikael S??derstr??m         [asp.net]        on Topsy.com

# re: Introducing ASP.NET MVC 3

Wednesday, August 25, 2010 7:22 AM by tanatrajan

Only one correction i was to make is backslash \ was missing before DataContext.sdf and providerName was incomplete.

<add name="DataContext" connectionString="Data Source=|DataDirectory|\DataContext.sdf"

       providerName="System.Data.SqlServerCe.4.0" />

Otherwise this is a wonderful work.

Many Thanks

Adi

# re: Introducing ASP.NET MVC 3

Sunday, September 05, 2010 10:02 PM by thrhtrurth

btwarvhtzaqvepxctyjsw. www.acnetreatment2k.com - acne treatment

fqzgtv

# re: Introducing ASP.NET MVC 3

Sunday, September 05, 2010 10:14 PM by thrhtrurth

huxetwfqzguxjqxaqwiuz. <a href=www.acnetreatment2k.com/>acne treatment</a>

npynpx

# re: Introducing ASP.NET MVC 3

Sunday, September 05, 2010 10:18 PM by thrhtrurth

ftwdowdsxfsyisyaqwltx. <a href=www.acnetreatment2k.com/>acne treatment</a>

ctyntz

# re: Introducing ASP.NET MVC 3

Wednesday, September 15, 2010 3:33 AM by erickton

Nice Tutorial, <a href="http://www.erickton.se">Billig Hemsida</a>

Mvh Erickton

# re: Introducing ASP.NET MVC 3

Saturday, September 25, 2010 12:15 AM by VagnerBZ

<a href=open.evworld.com/.../revia>Buy Naltrexone Revia</a>

# re: Introducing ASP.NET MVC 3

Thursday, October 21, 2010 8:36 AM by pepelactes

<a href="pepelac.t35.com/.../stats.php this cool site</a>

# re: Introducing ASP.NET MVC 3

Saturday, November 06, 2010 1:14 PM by norton firewall

I’ve been visiting your blog for a while now and I always find a gem in your new posts.  Thanks for sharing.

# re: Introducing ASP.NET MVC 3

Monday, November 08, 2010 10:51 PM by robert

# re: Introducing ASP.NET MVC 3

Monday, November 15, 2010 11:05 AM by FriOny

No smoking!Electron cigaret

# re: Introducing ASP.NET MVC 3

Monday, November 15, 2010 12:08 PM by FilliP

<a href=http://omskokna.ru>Okna v omske</a>

# re: Introducing ASP.NET MVC 3

Wednesday, November 17, 2010 7:40 AM by Joyty457

# re: Introducing ASP.NET MVC 3

Thursday, November 18, 2010 12:45 PM by TroTior

<a href="trig.com/.../biography">Erectile dysfunction pills</a>

# re: Introducing ASP.NET MVC 3

Sunday, November 28, 2010 2:51 PM by Cafliage

Great Blog. I add this Blog to my bookmarks.

# re: Introducing ASP.NET MVC 3

Saturday, December 18, 2010 12:00 PM by Jewel

# re: Introducing ASP.NET MVC 3

Sunday, December 19, 2010 3:58 PM by Jewel

Google [URL=http://google.com]google[/URL]

# re: Introducing ASP.NET MVC 3

Thursday, December 23, 2010 5:33 PM by Garfield

# re: Introducing ASP.NET MVC 3

Wednesday, January 12, 2011 1:27 PM by meadlemaGip

I’ve been visiting your blog for a while now and I always find a gem in your new posts.  Thanks for sharing.

# re: Introducing ASP.NET MVC 3

Tuesday, January 25, 2011 4:19 PM by xuxxestwwgj

hi        

i hope i enjoy my stay here      

pls be nice to me    

   thanks!

# re: Introducing ASP.NET MVC 3

Tuesday, January 25, 2011 5:29 PM by xxuxtewwgp

hi        

i hope i enjoy my stay here      

pls be nice to me    

   thanks!

# re: Introducing ASP.NET MVC 3

Wednesday, January 26, 2011 12:00 AM by xxxuestwwgr

hi        

i hope i enjoy my stay here      

pls be nice to me    

   thanks!

# re: Introducing ASP.NET MVC 3

Wednesday, January 26, 2011 12:07 AM by xxxxestwwgh

hi        

i hope i enjoy my stay here      

pls be nice to me    

   thanks!

# re: Introducing ASP.NET MVC 3

Wednesday, January 26, 2011 12:14 AM by xxxxnestwwge

hi        

i hope i enjoy my stay here      

pls be nice to me    

   thanks!

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 6:45 AM by mrtesty

Delete shis text plz. Sorry

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 11:19 AM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 12:08 PM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 4:11 PM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 4:19 PM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 4:27 PM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 7:29 PM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Friday, January 28, 2011 8:05 PM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Saturday, January 29, 2011 3:01 AM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Saturday, January 29, 2011 4:31 AM by UlceddyExcepe

Nice site <a href=http://google.com>....)</a>

# re: Introducing ASP.NET MVC 3

Saturday, January 29, 2011 5:58 AM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Sunday, January 30, 2011 4:58 AM by tweetattacks review

Hi    

looks  cool and nice  

Where should i start reading?    

thanks

# re: Introducing ASP.NET MVC 3

Sunday, January 30, 2011 7:57 PM by tweetattacks reviewx

TweetAttacks  

has anyone heard of this software?  

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 8:29 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 8:37 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 9:23 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 10:37 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 10:43 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 11:22 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 11:49 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Wednesday, February 02, 2011 11:55 PM by tweetattacks review

Hi      

looks  cool and nice    

Where should i start reading?      

thanks

# re: Introducing ASP.NET MVC 3

Thursday, February 03, 2011 1:32 AM by tweetattacks-account-creator

<a href=http://tweetattackstwitteraccountcreatorreview.info>Tweet Attacks Account Creator</a>

# re: Introducing ASP.NET MVC 3

Sunday, February 06, 2011 5:38 PM by Poummadaurn

You certainly deserve a round of applause for your post and more specifically, your blog in general. Very high quality material

# re: Introducing ASP.NET MVC 3

Sunday, February 13, 2011 3:48 PM by barley weight loss

I just sent this post to a bunch of my friends as I agree with most of what you’re saying here and the way you’ve presented it is awesome.

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 3:46 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 3:49 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 4:11 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 4:49 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 4:53 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 5:11 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 5:23 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 5:27 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 5:53 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 6:01 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Friday, February 25, 2011 7:48 AM by tweetattacks

Hope I enjoy my stay here..        

wish me well..        

thanks

# re: Introducing ASP.NET MVC 3

Sunday, February 27, 2011 5:22 PM by anirwayjady

I just book marked your blog on Digg and StumbleUpon.I enjoy reading your commentaries.

# re: Introducing ASP.NET MVC 3

Tuesday, March 01, 2011 8:02 PM by online government auction

I just sent this post to a bunch of my friends as I agree with most of what you’re saying here and the way you’ve presented it is awesome.

# re: Introducing ASP.NET MVC 3

Saturday, March 05, 2011 1:12 AM by ronogaiciburi

You certainly deserve a round of applause for your post and more specifically, your blog in general. Very high quality material

# re: Introducing ASP.NET MVC 3

Monday, March 07, 2011 1:41 PM by InseceDyncnaw

Awesome Post. I add this Blog to my bookmarks.

# re: Introducing ASP.NET MVC 3

Tuesday, March 22, 2011 6:25 PM by TerreFappaply

Very informative post. Thanks for taking the time to share your view with us.

# re: Introducing ASP.NET MVC 3

Friday, April 01, 2011 9:42 PM by austin police auction

Thanks For This Post, was added to my bookmarks.

# re: Introducing ASP.NET MVC 3

Tuesday, April 19, 2011 7:04 PM by best used car buys

You certainly have some agreeable opinions and views. Your blog provides a fresh look at the subject.

# re: Introducing ASP.NET MVC 3

Thursday, May 05, 2011 12:59 PM by GunbladeIV

I had error when trying to learn asp.net.

I have error regarding RecreateDatabaseIfModelChanges in global.asax file.   If you couild help me, please help me fix this error.  FYI im green with ASP.net.  and i need to learn this MVC 3 ASAP cuz im going to build a project on this. Thanks in advanced. your blog did help a lot.

# re: Introducing ASP.NET MVC 3

Wednesday, June 01, 2011 3:14 PM by quisteasseree

You certainly have some agreeable opinions and views. Your blog provides a fresh look at the subject.

# re: Introducing ASP.NET MVC 3

Monday, June 20, 2011 10:41 AM by vsdjc

caaidsqhbri bq fwdj

# re: Introducing ASP.NET MVC 3

Monday, June 20, 2011 11:38 PM by UlceddyExcepe

<a href=http://lqzjbbxi.com> :)</a>

# re: Introducing ASP.NET MVC 3

Saturday, July 16, 2011 4:52 PM by twingigma

I find myself coming to your blog more and more often to the point where my visits are almost daily now!

# re: Introducing ASP.NET MVC 3

Wednesday, August 24, 2011 10:53 AM by transparent bikini

I like your work!, twitter.com/transparentbiki transparent bikini,  304,

# re: Introducing ASP.NET MVC 3

Tuesday, September 06, 2011 12:06 PM by purse handles

It is a very good thing, ted.com/.../1023556 purse handles,  5360,

# re: Introducing ASP.NET MVC 3

Tuesday, September 06, 2011 12:19 PM by louis vuitton purse

So where it to find, ted.com/.../1023560 Cheap louis vuitton purse,  42221,

# re: Introducing ASP.NET MVC 3

Tuesday, September 06, 2011 5:52 PM by purse handles

:-(, www.about.me/pursehandlese All about purse handles,  619,

# re: Introducing ASP.NET MVC 3

Tuesday, September 06, 2011 7:57 PM by mens wallet with change purse price

What is it, www.about.me/menswalletwithchange mens wallet with change purse,  tjef,

# re: Introducing ASP.NET MVC 3

Wednesday, September 07, 2011 12:47 AM by First nursing schools

What is it, ted.com/.../1023551 nursing schools,  8-P,

# re: Introducing ASP.NET MVC 3

Wednesday, September 07, 2011 2:16 AM by pantyhose photography now

I like your work!, www.about.me/pantyhosephotographa pantyhose photography,  2578,

# re: Introducing ASP.NET MVC 3

Saturday, September 24, 2011 4:40 AM by Buy OEM software online

ndrq4W Hello! Read the pages not for the first day. Yes, the connection speed is not good. How can I subscribe? I would like to read you in the future!...

# re: Introducing ASP.NET MVC 3

Thursday, September 29, 2011 8:33 AM by how long does percocet stay in your system price

I like your work!, www.about.me/howlongdoespercocete how long does percocet stay in your system,  =PPP,

# re: Introducing ASP.NET MVC 3

Sunday, October 02, 2011 7:08 AM by printable flash cards for you

It is a very good thing, www.about.me/printableflashcardss printable flash cards,  %-))),

# re: Introducing ASP.NET MVC 3

Tuesday, October 04, 2011 1:31 AM by military pay chart here

I like your work!, www.about.me/militarypaycharte First military pay chart,  8P,

# re: Introducing ASP.NET MVC 3

Wednesday, October 26, 2011 6:29 AM by alkathtuh

own you seen this terrific medical place - http://buysumatriptan.info i actually liked it and found favourable salubriousness figures

# re: Introducing ASP.NET MVC 3

Wednesday, October 26, 2011 4:20 PM by window doors

# re: Introducing ASP.NET MVC 3

Saturday, November 05, 2011 1:02 PM by Summasoah

<a href=http://jlhjhndj.com>Hello  :)</a>

# re: Introducing ASP.NET MVC 3

Monday, November 07, 2011 2:30 PM by contour pillow travel

Best, www.twitter.com/contourpillowo contour pillow travel,  %-),

# re: Introducing ASP.NET MVC 3

Wednesday, November 09, 2011 11:28 AM by Best sagittarius tatoo design

:-(, www.twitter.com/sagittariustas Best sagittarius tatoo design,  folfjp,

# re: Introducing ASP.NET MVC 3

Thursday, November 10, 2011 12:27 AM by babes kick ass discount

What?, www.twitter.com/babeskickasss Real babes kick ass,  hnlws,

# re: Introducing ASP.NET MVC 3

Thursday, November 10, 2011 7:12 AM by discount designer purses

:-(, www.discountdesignerpur.iforums.us discount designer purses now,  %],

# re: Introducing ASP.NET MVC 3

Friday, November 11, 2011 7:29 PM by fat loss

I believe you are right completely!!!

# re: Introducing ASP.NET MVC 3

Saturday, November 26, 2011 11:12 PM by CNA Training

Hi there! Do you know if they make any plugins to protect against hackers? I'm kinda paranoid about losing everything I've worked hard on. Any tips?

# re: Introducing ASP.NET MVC 3

Thursday, December 08, 2011 4:56 AM by knock off coach purses price

Your Site Is Great!, www.twitter.com/knockoffcoache knock off coach purses price,  rum,

# re: Introducing ASP.NET MVC 3

Tuesday, December 27, 2011 10:05 AM by puntydionne

buy a <a href=www.wearol.com/special-occasion-dresses-evening-dresses-c-9_2.html>Evening Dresses</a>   to get new coupon    and get big save

# re: Introducing ASP.NET MVC 3

Wednesday, December 28, 2011 12:32 AM by Vitalina

Hello! You have a very informative site! And here's my! anabantidaeaquariumfish.blogspot.com

# re: Introducing ASP.NET MVC 3

Tuesday, January 03, 2012 11:01 PM by Quomskory

best for you <a href=guccibuy.jimdo.com/>buy gucci bags</a>  online    for promotion code

# re: Introducing ASP.NET MVC 3

Thursday, January 26, 2012 12:57 PM by UlceddyExcepe

<a href=http://nvzrskax.com> :)</a>

# re: Introducing ASP.NET MVC 3

Monday, March 26, 2012 3:37 PM by knock off coach purses

Best Wishes!, www.formspring.me/patrollas knock off coach purses information,  8-),