ASP.NET MVC 3 概述

[轉自] http://www.cnblogs.com/haogj/archive/2011/01/15/1936473.html

ASP.NET MVC 3 概述

原文地址:http://www.asp.net/mvc/mvc3

導言

ASP.NET MVC3 在 ASP.NET MVC 1 和 2 的基礎上,增加了大量的特性,使得代碼更加簡化,並且可以深度擴展。這篇文章提供包含在此次發佈中的許多新特性的說明,分爲以下部分:

  • Razor 視圖引擎
  • 支持多視圖引擎
  • Controller 改進
  • JavaScript 和 Ajax
  • Model 驗證的改進
  • 依賴注入 Dependency Injection 的改進
  • 其他新特性

Razor 視圖引擎

ASP.NET MVC3 帶來了一種新的名爲 Razor 的視圖引擎,提供了下列優點:

  • Razor 的語法簡單且清晰,只需要最小化的輸入
  • Razor 容易學習,語法類似於 C# 和 VB
  • Visual Studio 對於 Razor 提供了智能提示和語法着色
  • Razor 視圖不需要允許程序或者啓動 Web 服務器就可以進行測試

Razor 現在提供了一些新的特徵:

  • @model 用來指定傳到視圖的 Model 類型
  • @*  * 註釋語法
  • 對於整個站點可以一次性設定默認項目,例如佈局。
  • Html.Raw 方法提供了沒有進行 HTML 編碼的輸出
  • 支持在多個視圖之間共享代碼 ( _viewstart.cshtml 或者 _viewstart.vbhtml )

Razor 還包含新的  HTML Helper,例如:

  • Chart. 生成圖表
  • WebGrid, 生成數據表格,支持完整的分頁和排序
  • Crypto,使用 Hash 算法來創建 Hash 和加鹽的口令
  • WebImage, 生成圖片
  • WebMail, 發送電子郵件

關於 Razor 更多的資料,可以參考下面的資源:

支持多視圖引擎

 在 ASP.NET MVC3 中,增加視圖的對話框中允許你選擇你希望的視圖引擎,在新建項目對話框中,你可以指定項目默認的視圖引擎,可以選擇 WebForm,Razor,或者開源的視圖引擎,例如:Spark, NHaml, 或者 NDjango.

控制器的改進

 全局的 Action 過濾器

有的時候你希望能夠在在一個 Action 方法執行之前或者執行之後執行一些處理邏輯,在 ASP.NET MVC2 中,提供了 Action 過濾器,允許對特定控制器的 Action 方法進行處理,實際上,有時候你希望對所有的 Action 都進行類似的處理,MVC3 允許你將過濾器加入到 GlobalFilters 集合中來創建全局的過濾器,詳細的介紹,參考下列資源:

新的 ViewBag 屬性

MVC2 中的控制器支持 ViewData 屬性,允許通過後綁定的字典將數據傳送給視圖模板,在 MVC3 中,你可以通過 ViewBag 來更加簡單的完成。例如,對於 ViewData["Message"] = "text",你可以通過 ViewBag.Message = "text" 來完成。你不需要通過類來定義任何強類型的屬性,因爲這是動態屬性,在內部,ViewBag 屬性以名-值對的形式保存在 ViewData 字典中。注意,在許多預發佈版本中,這個屬性被稱爲 ViewModel。

新的 ActionResult 類型

下面的 ActionResult 類型在 MVC3 中是新增的或者被擴展的。

  • HttpNotFoundResult. 向客戶端返回 404 HTTP 狀態.
  • RedirectResult. 基於一個布爾型的參數,返回一個臨時的重定向 (HTTP 302 status code) 或者持久的重定向 (HTTP 301 status code),  結合這個改進,,  Controller 提供了三個方法來支持持久的重定向: RedirectPermanent, RedirectToRoutePermanent, 和 RedirectToActionPermanent. 這些方法返回一個 Permanent  屬性爲真的 RedirectResult 對象實例。
  • HttpStatusCodeResult. 返回用戶指定的 HTTP 狀態碼。

JavaScript 和 Ajax 改進

 默認情況下,在 MVC3 中,Ajax 和驗證使用不引人注目的 unobtrusive  的 JavaScript 方式。unobtrusive  不會在 HTML 中插入行內的 JavaScript ,這使得 HTML 更加精簡和更少干擾,也使得更加容易被替換和定製 JavaScript 庫,在 MVC3 中,驗證助手默認使用 jQuery.Validate 插件完成,如果你希望使用 MVC2 的行爲,你可以在 web.config 中通過配置來關閉 unobtrusive ,更多的信息參考下列資源:

默認啓用了客戶端驗證

 在早先版本的 MVC 中,你需要在視圖中顯式調用 Html.EnableClientValidation 方法來啓用客戶端驗證。在 MVC3 中,已經不再需要了,因爲默認就會啓用客戶端驗證。可以在 web.config 中關閉。

爲了使得客戶端驗證工作,你仍然需要在網站中加入對 jQuery 和 jQuery.Validation 庫的引用,你可以在自己的網站中提供,或者使用 Microsoft 或者 Google 的 CDN 服務器。

遠程驗證

ASP.NET 3 通過一個新的標籤 RemoteAttribute 對 jQuery Validation 插件的遠程驗證提供支持。這允許客戶端的驗證庫自動調用一個你定義在服務器上的自定義的方法來完成只能在服務器上完成的驗證邏輯。

在下面的例子中,Remote 標籤指定了通過一個定義在 UsersController 中名爲 UserNameAvailable 的方法來驗證用戶名字段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章