<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx" -->

---
title: ASP.NET MVC 3 preview 1 is out! Quick review... | daily.dev
description: ASP.NET MVC 3 preview 1 introduces the new Razor view engine, which replaces the old WebForms-style <% %> syntax with cleaner @ expressions. Other new features...
canonical: https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: ASP.NET MVC 3 preview 1 is out! Quick review... | daily.dev
og:description: ASP.NET MVC 3 preview 1 introduces the new Razor view engine, which replaces the old WebForms-style <% %> syntax with cleaner @ expressions. Other new features...
og:url: https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx
og:image: https://api.daily.dev/og/posts/fgQNbwvXx.png
og:image:alt: ASP.NET MVC 3 preview 1 is out! Quick review...
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ASP.NET MVC 3 preview 1 is out! Quick review...

**[Maarten Balliauw](https://daily.dev/sources/maartenballiauw)** · 5 min read · 0 upvotes · 0 comments

## Summary

ASP.NET MVC 3 preview 1 introduces the new Razor view engine, which replaces the old WebForms-style <% %> syntax with cleaner @ expressions. Other new features include dynamic ViewData/ViewModel access, global action filters configurable in Global.asax, four new dependency injection hooks, and additional ActionResult types like HttpNotFoundResult, HttpStatusCodeResult, and permanent redirect results. The author walks through code examples for each feature and shares feedback, including a wishlist for more granular global filter scoping.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.maartenballiauw.be/posts/2010-07-27-aspnet-mvc-3-preview-1-is-out-quick-review>

## Questions this post answers

### What is the Razor view engine in ASP.NET MVC 3 and how is its syntax different from the old WebForms view engine?

Razor is a new view engine introduced in ASP.NET MVC 3 preview 1 that replaces the WebForms-style <% %> code blocks with shorter @ expressions, reducing code clutter in views. For example, a foreach loop written as <% foreach (var c in Model.Customers) { %> in WebForms becomes @foreach (var c in Model.Customers) { } in Razor, with full IntelliSense support in Visual Studio's Razor editor.

_daily.dev surfaces practical walkthroughs like this for developers adopting new view engine syntax._

### How do global action filters work in ASP.NET MVC 3?

Global action filters let a single filter, such as HandleErrorAttribute, apply automatically to every controller and action method in an application. They are registered with one line in Global.asax: GlobalFilters.Filters.Add(new HandleErrorAttribute()). This avoids developers forgetting to add the same attribute manually to each controller, though at preview 1 it lacks per-area or per-action granularity.

_Developers weighing framework-wide conventions can track filter granularity debates like this on daily.dev._

### What new ActionResult types were added in ASP.NET MVC 3?

ASP.NET MVC 3 preview 1 added HttpNotFoundResult, HttpStatusCodeResult (which accepts any status code, such as 418 for "I'm a teapot"), and three permanent redirect variants: RedirectPermanent, RedirectToRoutePermanent, and RedirectToActionPermanent, which write permanent redirect headers instead of temporary ones.

_daily.dev helps .NET developers keep pace with incremental API additions like these across framework previews._

## Similar posts on daily.dev

- [Microsoft Releases .NET 11 Preview 6 With Language and Framework Updates](https://daily.dev/posts/microsoft-releases-net-11-preview-6-with-language-and-framework-updates-oqwjdzv3l) · InfoQ · 6 upvotes · 0 comments
- [Microsoft Releases .NET 11 Preview 3 with Updates Across Runtime, SDK, MAUI, and ASP.NET Core](https://daily.dev/posts/microsoft-releases-net-11-preview-3-with-updates-across-runtime-sdk-maui-and-asp-net-core-4tyjhbtqm) · InfoQ · 5 upvotes · 1 comments

---

Tags: [#.net](https://daily.dev/tags/.net), [#c#](https://daily.dev/tags/c#), [#dependency-injection](https://daily.dev/tags/dependency-injection)

[View this post on daily.dev](https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"ASP.NET MVC 3 preview 1 is out! Quick review...","url":"https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx"},"datePublished":"2026-10-04T13:04:41.992Z","dateModified":"2026-10-04T13:08:17.929Z","description":"ASP.NET MVC 3 preview 1 introduces the new Razor view engine, which replaces the old WebForms-style <% %> syntax with cleaner @ expressions. Other new features...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/149bf3f1f1a309d33d5d448255a96a28?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/149bf3f1f1a309d33d5d448255a96a28?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Maarten Balliauw","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Maarten Balliauw","logo":"https://media.daily.dev/image/upload/s--rOTg3VYO--/f_auto,q_auto/v1791119043/logos/maartenballiauw?_a=BAMAMicg0","url":"https://daily.dev/sources/maartenballiauw"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":".net,c#,dependency-injection","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Maarten Balliauw","item":"https://daily.dev/sources/maartenballiauw"},{"@type":"ListItem","position":3,"name":"ASP.NET MVC 3 preview 1 is out! Quick review..."}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/asp-net-mvc-3-preview-1-is-out-quick-review--fgqnbwvxx#faq","mainEntity":[{"@type":"Question","name":"What is the Razor view engine in ASP.NET MVC 3 and how is its syntax different from the old WebForms view engine?","acceptedAnswer":{"@type":"Answer","text":"Razor is a new view engine introduced in ASP.NET MVC 3 preview 1 that replaces the WebForms-style <% %> code blocks with shorter @ expressions, reducing code clutter in views. For example, a foreach loop written as <% foreach (var c in Model.Customers) { %> in WebForms becomes @foreach (var c in Model.Customers) { } in Razor, with full IntelliSense support in Visual Studio's Razor editor. daily.dev surfaces practical walkthroughs like this for developers adopting new view engine syntax."}},{"@type":"Question","name":"How do global action filters work in ASP.NET MVC 3?","acceptedAnswer":{"@type":"Answer","text":"Global action filters let a single filter, such as HandleErrorAttribute, apply automatically to every controller and action method in an application. They are registered with one line in Global.asax: GlobalFilters.Filters.Add(new HandleErrorAttribute()). This avoids developers forgetting to add the same attribute manually to each controller, though at preview 1 it lacks per-area or per-action granularity. Developers weighing framework-wide conventions can track filter granularity debates like this on daily.dev."}},{"@type":"Question","name":"What new ActionResult types were added in ASP.NET MVC 3?","acceptedAnswer":{"@type":"Answer","text":"ASP.NET MVC 3 preview 1 added HttpNotFoundResult, HttpStatusCodeResult (which accepts any status code, such as 418 for \"I'm a teapot\"), and three permanent redirect variants: RedirectPermanent, RedirectToRoutePermanent, and RedirectToActionPermanent, which write permanent redirect headers instead of temporary ones. daily.dev helps .NET developers keep pace with incremental API additions like these across framework previews."}}]}
```

