|
原文地址: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 更多的資料,可以參考下面的資源:
- Scott Guthrie's blog post introducing Razor
- Scott Guthrie's blog post introducing the @model keyword
- Scott Guthrie's blog post introducing Razor layouts
- Razor API Quick Reference
- MVC 3 Release Notes
支持多視圖引擎
在 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 ,更多的信息參考下列資源:
- Basic introduction to unobtrusive JavaScript on the Wikipedia site
- Brad Wilson's Unobtrusive JavaScript Post
- Brad Wilson's Unobtrusive JavaScript Validation Post
- Creating a MVC 3 Application with Razor and Unobtrusive JavaScript (tutorial on the ASP.NET site)
- MVC 3 Release Notes
默認啟用了客戶端驗證
在早先版本的 MVC 中,你需要在視圖中顯式調用 Html.EnableClientValidation 方法來啟用客戶端驗證。在 MVC3 中,已經不再需要了,因為默認就會啟用客戶端驗證。可以在 web.config 中關閉。
為了使得客戶端驗證工作,你仍然需要在網站中加入對 jQuery 和 jQuery.Validation 庫的引用,你可以在自己的網站中提供,或者使用 Microsoft 或者 Google 的 CDN 服務器。
遠程驗證
ASP.NET 3 通過一個新的標簽 RemoteAttribute 對 jQuery Validation 插件的遠程驗證提供支持。這允許客戶端的驗證庫自動調用一個你定義在服務器上的自定義的方法來完成只能在服務器上完成的驗證邏輯。
在下面的例子中,Remote 標簽指定了通過一個定義在 UsersController 中名為 UserNameAvailable 的方法來驗證用戶名字段。
public class User
{
[Remote("UserNameAvailable", "Users")]
public string UserName { get; set; }
}
NET技術:ASP.NET MVC 3 概述,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。