.NET 3.5と近い将来リリースされる.NET 4の両方で利用可能な、MicrosoftのオープンソースMVCフレームワーク、ASP.NET MVC 2の製品版がリリースされた。ASP.NET MVC 2は以下のような多くの新機能を搭載している。
テンプレーテッドヘルパ(Templated Helpers)は、型指定されたテンプレートをベースに、表示用もしくは編集用のHTMLを自動的にレンダリングする機能だ。Html.DisplayFor(式)を呼び出すだけで、レンダリングエンジンが、開発者によって定義されたテンプレートの中から、式にマッチするものを探し出してくれる。
エリア(Areas)は、プロジェクトを小さくてより管理しやすい単位に分割することを可能にする。各エリアは独自のモデル、ビュー、コントローラを持つことができる。
スレッドプールサイズの限界値は、ASP.NETのスケーラビリティにおいてよく知られた問題である。CPUバウンドのリクエストでは問題は起こらないが、I/Oバウンドのリクエストでは、サーバがスレッドを使い果たしてしまうことが起こりえる。パフォーマンスカウンタ上では、サーバがアイドルしているように見えるが、実はまだ他のリクエストを処理することができない。非同期コントローラ(Asynchronous Controller)を使えば、スレッドプールとの連携を回避することができる。
アクションメソッドのパラメータは、デフォルト値をサポートするようになった。VBやC# 4といったオプショナルパラメータをサポートする言語では、各言語の構文によってデフォルト値を設定できる。C# 3のようなオプショナルパラメータをサポートしない言語の場合は、DefaultValue属性を使用することになる。
DataAnnotations属性を使用することで、基本的なバリデーションルールを適用することができるようになった。これはモデルバリデータプロバイダ(Model-Validator Providers)とプラガブルなクライアントサイドバリデーションフレームワークの連携によって実現される。
実際のところほとんどのブラウザが、RESTのために必要となるHTTP verbの全てをサポートしていないのは、RESTムーブメントの少々おかしな面のひとつである。HttpMethodOverrideメソッドを使うと、HTTP verbをシミュレートするための特殊なhiddenフィールドを、フレームワークが生成する。これにより、実際のリクエストはHTTP POSTだが、フレームワークが自動的に適切なPUTやDELETEアクションにルーティングしてくれるようになる。