當前位置:成語大全網 - 新華字典 - ASP.NET的版本現在有哪幾個,之間有什麽區別?

ASP.NET的版本現在有哪幾個,之間有什麽區別?

ASP.NET目前有三個成熟穩定的版本。

mvc1 模式:

view接收用戶輸入,把命令傳到controller

controller處理命令,更新model

model被更新後,會通知view需要update

view更新後向用戶顯示

mvc2 模式:

由於mvc1中,model可以通知view,然後view就可以被更新,這在windows程序中很常見,像MFC的frame-document-view架構,如果document改變了,他會主動通知view進行update

但是在web中,作為model的java bean更新後,無法調用作為view的jsp(而且view通常很多,需要選壹個),因此改為mvc2模式:

view接收用戶輸入,把命令傳到controller

controller處理命令,更新model

model被更新後,controller會選壹個view並forward到這個jsp,附帶把model放到request參數

這個view獲得model然後顯示

ASP.NET MVC 3 新特性全解析

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

Razor 視圖引擎

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

Razor 現在提供了壹些新的特征:

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

支持多視圖引擎

在 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 中是新增的或者被擴展的。

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 的方法來驗證用戶名字段。

Razor 的語法簡單且清晰,只需要最小化的輸入

Razor 容易學習,語法類似於 C# 和 VB

Visual Studio 對於 Razor 提供了智能提示和語法著色

Razor 視圖不需要允許程序或者啟動 Web 服務器就可以進行測試

@model 用來指定傳到視圖的 Model 類型

@* * 註釋語法

對於整個站點可以壹次性設定默認項目,例如布局。

Html.Raw 方法提供了沒有進行 HTML 編碼的輸出

支持在多個視圖之間***享代碼 ( _viewstart.cshtml 或者 _viewstart.vbhtml )

Chart. 生成圖表

WebGrid, 生成數據表格,支持完整的分頁和排序

Crypto,使用 Hash 算法來創建 Hash 和加鹽的口令

WebImage, 生成圖片

WebMail, 發送電子郵件

HttpNotFoundResult. 向客戶端返回 404 HTTP 狀態.

RedirectResult. 基於壹個布爾型的參數,返回壹個臨時的重定向 (HTTP 302 status code) 或者持久的重定向 (HTTP 301 status code), 結合這個改進,, Controller 提供了三個方法來支持持久的重定向: RedirectPermanent, RedirectToRoutePermanent

, 和 RedirectToActionPermanen

t. 這些方法返回壹個 Permanent 屬性為真的 RedirectResult 對象實例。

HttpStatusCodeResult. 返回用戶指定的 HTTP 狀態碼。

public class User

{

[Remote("UserNameAvailable", "Users")]

public string UserName { get; set; }

}

下面的代碼定義在控制器中

public class UsersController

{

public bool UserNameAvailable(string username)

{

if(MyRepository.UserNameExists(username))

{

return "false";

}

return "true";

}

}

關於 Remote 屬性的更多資源,參考 How to: Implement Remote Validation in ASP.NET MVC /en-us/library/gg508808(VS.98).aspx

JSON 綁定支持

ASP.NET MVC3 包含內置的 JSON 綁定支持,允許 Action 方法接收 JSON 編碼的數據並且模型化為 Action 的參數。這個能力經常被用於客戶端的模板和數據綁定中。客戶端模板允許妳通過客戶端的模板來格式化和顯示壹個或者多個數據,MVC3 允許妳簡單的連接客戶端模板和服務器端的 Action 方法,通過 JSON 來發送和接收數據,更多的信息參考:Scott Guthrie's MVC 3 Preview blog post.

ValidationAttribute 類

在 .NET Framework4 中被改進 的ValidationAttribute 類支持新的 IsValid 重載,提供關於當前驗證上下文的更多信息,例如什麽對象被驗證了。這允許妳基於 Model 的其他屬性來驗證當前值,例如,新的 CompareAttribute 就允許妳比較 Model 的兩個屬性的值,在下面的例子中,ComparePassword 屬性必須匹配 Password 字段來同通過驗證。

Model 驗證的改進

DataAnnotations 元數據標簽

ASP.NET MVC3 支持 DataAnnotations 元數據標簽,例如:DisplayAttribute。

public class User

{

[Required]

public string Password { get; set; }

[Required, Compare("Password")]

public string ComparePassword { get; set; }

}

驗證接口

IValidatableObject 接口允許執行 Model 水平的驗證,並且允許妳提供整個模型狀態的驗證錯誤信息,或者基於 Model 的兩個屬性。當 Model 綁定的時候,MVC3 從 IValidatableObject 接收錯誤信息,在視圖中使用內建的 HTML 助手時,將會自動標識或者高亮受影響的字段。

IClientValidatable 接口允許 ASP.NET MVC 在運行時發現支持的客戶端驗證器,這個接口被用來支持集成不同的驗證框架。

更加關於驗證接口的內容,參考 Scott Guthrie's MVC 3 Preview blog post 中 Model Validation Improvements 壹節。

依賴註入Dependency Injection 的改進

ASP.NET MVC3 提供了更好的 DI 和 IoC 支持,在下面的地方支持 DI:

MVC3 支持 Common Service Locator 庫和任何支持這個庫的 IServiceLocator 接口的 DI 容器。也支持新的容易集成到 DI 框架的 IDependencyResolver 接口。

更多關於 DI 的信息,參考:

其他新特性

NuGet 集成

ASP.NET MVC3 自動安裝和啟用 NuGet ,NUGet 是免費開源的壹個包管理器,使得在妳的項目中容易發現,安裝,和使用 .NET 庫。它可以和所有的 Visual Studio 項目類型壹起工作,包括 ASP.NET WebForm 和 MVC。

NuGet 允許開發者維護開源項目,例如,像 Moq 項目,NHibernate 等等,可以註冊它們到壹個在線的網站中。

更多信息參考:NuGet documentation on the CodePlex site.

部分頁的輸出緩存

ASP.NET MVC 從版本1 開始支持整頁緩存,MVC3 還提供了部分頁緩存。這可以允許妳容易地緩存輸出的壹個區域或者片斷,更多地內容參考 Scott Guthrie's blog post on the MVC 3 release candidate 中 Partial Page Output Caching 段落,還有 MVC 3 Release Notes 中 Child Action Output Caching 段落。

在請求驗證中的粒度控制

ASP.NET MVC 內建了請求驗證機制來自動幫助處理類似跨站攻擊和 HTML 註入等等。實際上,有時妳希望能夠顯式關閉請求的驗證,例如妳希望允許用戶提交 HTML 內容,例如在內容管理系統中,現在妳可以通過增加 AllowHtml 標簽到 Model 或者視圖的 Model 來支持在綁定的時候基於壹個屬性關閉請求驗證。更多地資料參考:

可擴展的新建項目對話框

在 MVC3 中,妳可以增加項目模板,視圖引擎,單元測試項目框架到新建項目對話框中。

腳手架的改進

MVC3 中的腳手架對於主鍵提供了更好的支持,例如,腳手架的模板不會將主鍵加入的編輯表單中了。

默認情況下,創建和編輯的腳手架現在使用 Html.EditorFor 助手來替代 Html.TextBoxFor 助手,這個改進在增加視圖對話框生成壹個視圖的時候,支持模型中的元數據標簽。

對於 Html.LabelFor 和 Html.LabelForModel的新重載

對於 LabelFor 和 LabelForModel 增加了新的方法重載,允許指定或者重寫 Label 文本。

無 Session 的控制器支持

MVC3 中可以指定控制器是否使用 Session 狀態,進而,Session 是否是讀寫還是只讀。

新的 AdditionalMetadataAttribute類

可以通過 AdditionalMetadataAttribute 標簽對 Model 的壹個屬性訪問 ModelMetadata.AdditionalValues 字典,例如,如果模型的某個屬性僅僅支持管理員顯示,妳可以如下設置:

Scott Guthrie's blog post on the MVC 3 release candidate 中 Unobtrusive JavaScript and Validation 壹節.

MVC 3 Release Notes

Brad Wilson's series of blog posts on Service Location

MVC 3 Release Notes

控制器 (registering and injecting controller factories, injecting controllers).

視圖 (registering and injecting view engines, injecting dependencies into view pages).

Action 過濾器 (locating and injecting filters).

Model 綁定器 (registering and injecting).

Model 驗證提供器 (registering and injecting).

Model 元數據提供器 (registering and injecting).

Value 提供器 (registering and injecting).