|
原文地址:http://www.ASP.NET/mvc/mvc3
導(dǎo)言
ASP.NET MVC3 在 ASP.NET MVC 1 和 2 的基礎(chǔ)上,增加了大量的特性,使得代碼更加簡(jiǎn)化,并且可以深度擴(kuò)展。這篇文章提供包含在此次發(fā)布中的許多新特性的說(shuō)明,分為以下部分:
- Razor 視圖引擎
- 支持多視圖引擎
- Controller 改進(jìn)
- JavaScript 和 Ajax
- Model 驗(yàn)證的改進(jìn)
- 依賴注入 Dependency Injection 的改進(jìn)
- 其他新特性
Razor 視圖引擎
ASP.NET MVC3 帶來(lái)了一種新的名為 Razor 的視圖引擎,提供了下列優(yōu)點(diǎn):
- Razor 的語(yǔ)法簡(jiǎn)單且清晰,只需要最小化的輸入
- Razor 容易學(xué)習(xí),語(yǔ)法類似于 C# 和 VB
- Visual Studio 對(duì)于 Razor 提供了智能提示和語(yǔ)法著色
- Razor 視圖不需要允許程序或者啟動(dòng) Web 服務(wù)器就可以進(jìn)行測(cè)試
Razor 現(xiàn)在提供了一些新的特征:
- @model 用來(lái)指定傳到視圖的 Model 類型
- @* * 注釋語(yǔ)法
- 對(duì)于整個(gè)站點(diǎn)可以一次性設(shè)定默認(rèn)項(xiàng)目,例如布局。
- Html.Raw 方法提供了沒有進(jìn)行 HTML 編碼的輸出
- 支持在多個(gè)視圖之間共享代碼 ( _viewstart.cshtml 或者 _viewstart.vbhtml )
Razor 還包含新的 HTML Helper,例如:
- Chart. 生成圖表
- WebGrid, 生成數(shù)據(jù)表格,支持完整的分頁(yè)和排序
- Crypto,使用 Hash 算法來(lái)創(chuàng)建 Hash 和加鹽的口令
- WebImage, 生成圖片
- WebMail, 發(fā)送電子郵件
關(guān)于 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 中,增加視圖的對(duì)話框中允許你選擇你希望的視圖引擎,在新建項(xiàng)目對(duì)話框中,你可以指定項(xiàng)目默認(rèn)的視圖引擎,可以選擇 WebForm,Razor,或者開源的視圖引擎,例如:Spark, NHaml, 或者 NDjango.
控制器的改進(jìn)
全局的 Action 過濾器
有的時(shí)候你希望能夠在在一個(gè) Action 方法執(zhí)行之前或者執(zhí)行之后執(zhí)行一些處理邏輯,在 ASP.NET MVC2 中,提供了 Action 過濾器,允許對(duì)特定控制器的 Action 方法進(jìn)行處理,實(shí)際上,有時(shí)候你希望對(duì)所有的 Action 都進(jìn)行類似的處理,MVC3 允許你將過濾器加入到 GlobalFilters 集合中來(lái)創(chuàng)建全局的過濾器,詳細(xì)的介紹,參考下列資源:
新的 ViewBag 屬性
MVC2 中的控制器支持 ViewData 屬性,允許通過后綁定的字典將數(shù)據(jù)傳送給視圖模板,在 MVC3 中,你可以通過 ViewBag 來(lái)更加簡(jiǎn)單的完成。例如,對(duì)于 ViewData["Message"] = "text",你可以通過 ViewBag.Message = "text" 來(lái)完成。你不需要通過類來(lái)定義任何強(qiáng)類型的屬性,因?yàn)檫@是動(dòng)態(tài)屬性,在內(nèi)部,ViewBag 屬性以名-值對(duì)的形式保存在 ViewData 字典中。注意,在許多預(yù)發(fā)布版本中,這個(gè)屬性被稱為 ViewModel。
新的 ActionResult 類型
下面的 ActionResult 類型在 MVC3 中是新增的或者被擴(kuò)展的。
- HttpNotFoundResult. 向客戶端返回 404 HTTP 狀態(tài).
- RedirectResult. 基于一個(gè)布爾型的參數(shù),返回一個(gè)臨時(shí)的重定向 (HTTP 302 status code) 或者持久的重定向 (HTTP 301 status code), 結(jié)合這個(gè)改進(jìn),, Controller 提供了三個(gè)方法來(lái)支持持久的重定向:
RedirectPermanent
,RedirectToRoutePermanent
, 和RedirectToActionPermanent
. 這些方法返回一個(gè) Permanent 屬性為真的RedirectResult
對(duì)象實(shí)例。 - HttpStatusCodeResult. 返回用戶指定的 HTTP 狀態(tài)碼。
JavaScript 和 Ajax 改進(jìn)
默認(rèn)情況下,在 MVC3 中,Ajax 和驗(yàn)證使用不引人注目的 unobtrusive 的 JavaScript 方式。unobtrusive 不會(huì)在 HTML 中插入行內(nèi)的 JavaScript ,這使得 HTML 更加精簡(jiǎn)和更少干擾,也使得更加容易被替換和定制 JavaScript 庫(kù),在 MVC3 中,驗(yàn)證助手默認(rèn)使用 jQuery.Validate 插件完成,如果你希望使用 MVC2 的行為,你可以在 web.config 中通過配置來(lái)關(guān)閉 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
默認(rèn)啟用了客戶端驗(yàn)證
在早先版本的 MVC 中,你需要在視圖中顯式調(diào)用 Html.EnableClientValidation 方法來(lái)啟用客戶端驗(yàn)證。在 MVC3 中,已經(jīng)不再需要了,因?yàn)槟J(rèn)就會(huì)啟用客戶端驗(yàn)證。可以在 web.config 中關(guān)閉。
為了使得客戶端驗(yàn)證工作,你仍然需要在網(wǎng)站中加入對(duì) jQuery 和 jQuery.Validation 庫(kù)的引用,你可以在自己的網(wǎng)站中提供,或者使用 Microsoft 或者 Google 的 CDN 服務(wù)器。
遠(yuǎn)程驗(yàn)證
ASP.NET 3 通過一個(gè)新的標(biāo)簽 RemoteAttribute 對(duì) jQuery Validation 插件的遠(yuǎn)程驗(yàn)證提供支持。這允許客戶端的驗(yàn)證庫(kù)自動(dòng)調(diào)用一個(gè)你定義在服務(wù)器上的自定義的方法來(lái)完成只能在服務(wù)器上完成的驗(yàn)證邏輯。
在下面的例子中,Remote 標(biāo)簽指定了通過一個(gè)定義在 UsersController 中名為 UserNameAvailable 的方法來(lái)驗(yàn)證用戶名字段。
public class User
{
[Remote("UserNameAvailable", "Users")]
public string UserName { get; set; }
}
NET技術(shù):ASP.NET MVC 3 概述,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。