訓練
學習路徑
Implement finance and operations apps - Training
Plan and design your project methodology to successfully implement finance and operations apps with FastTrack services, data management and more.
(包括 2011 年 4 月工具更新)
ASP.NET MVC 3 是一種架構,可使用妥善建立的設計模式,以及 ASP.NET 和.NET Framework的強大功能來建置可調整、標準型 Web 應用程式。
它會與 ASP.NET MVC 2 並存安裝,因此立即開始使用!
在這裡下載 安裝程式
ASP.NET MVC 3 的新功能
安裝和說明
ASP.NET MVC 3 建置在 ASP.NET MVC 1 和 2 上,新增可簡化程式碼並允許更深入擴充性的絕佳功能。 本主題提供此版本中包含的許多新功能概觀,並組織成下列各節:
如果您完全不熟悉架構,新的 Scaffolding 系統可讓您更輕鬆地挑選並開始使用,並在您遇到且已經知道您所做的事時自動執行常見的開發工作。
新的 NuGet Scaffolding 套件支援此套件,稱為 MvcScaffolding。 許多軟體技術都會使用 「Scaffolding」 一詞來表示「快速產生您接著可編輯和自訂之軟體的基本大綱」。 我們為 ASP.NET MVC 建立的 Scaffolding 套件在數個案例中非常有説明:
MvcScaffolding 中的其他功能包括:
ASP.NET MVC 3 工具更新包含此 Scaffolding 系統的絕佳 Visual Studio 支援,例如:
如需 ASP.NET MVC 3 中 Scaffolding 的詳細資訊,請參閱下列資源:
Steve Sanderson 的文章系列,包括:
Scott Hanselman 的 PDC 2010 研討會文章,使用 Microsoft「未命名的 Web 愛套件」建置部落格
[新增專案] 對話方塊包含啟用 HTML 5 版專案範本的核取方塊。 這些範本會利用 Modernizr 1.7,在舊版瀏覽器中提供 HTML 5 和 CSS 3 的相容性支援。
ASP.NET MVC 3 隨附名為 Razor 的新檢視引擎,可提供下列優點:
一些新的 Razor 功能包括下列各項:
@model
用來指定要傳遞至檢視之型別的語法。@* *@
批註語法。layoutpage
整個網站的) 一次。Html.Raw
顯示沒有 HTML 編碼之文字的方法。Razor 也包含新的 HTML 協助程式,例如:
Chart
. 轉譯圖表,提供與 ASP.NET 4 中圖表控制項相同的功能。WebGrid
. 轉譯資料格,其中包含分頁和排序功能。Crypto
. 使用雜湊演算法來建立正確 Salt 和雜湊的密碼。WebImage
. 呈現影像。WebMail
. 傳送電子郵件訊息。如需 Razor 的詳細資訊,請參閱下列資源:
ASP.NET MVC 3 中的 [ 新增檢 視] 對話方塊可讓您選擇要使用的檢視引擎,而 [ 新增專案 ] 對話方塊可讓您指定專案的預設檢視引擎。 您可以選擇 ASPX) 、Razor 或開放原始碼檢視引擎,例如Spark、NHaml或NDjango等Web Form檢視 (引擎。
有時候您想要在執行動作方法之前或動作方法執行之後執行邏輯。 若要支援此功能,ASP.NET MVC 2 提供的動作篩選器。 動作篩選準則是自訂屬性,可提供宣告式方法,可將動作前和動作後行為新增至特定的控制器動作方法。 不過,在某些情況下,您可能想要指定套用至所有動作方法的動作前或後置動作行為。 MVC 3 可讓您藉由將它們新增至 GlobalFilters
集合來指定全域篩選。 如需全域動作篩選的詳細資訊,請參閱下列資源:
MVC 2 控制器支援 ViewData
屬性,可讓您使用晚期繫結字典 API 將資料傳遞至檢視範本。 在 MVC 3 中,您也可以使用稍微簡單的語法搭配 ViewBag
屬性來完成相同的用途。 例如,您可以撰寫 ,而不是撰寫 ViewData["Message"]="text"
ViewBag.Message="text"
。 您不需要定義任何強型別類別,即可使用 ViewBag
屬性。 因為它是動態屬性,您可以改為只取得或設定屬性,並在執行時間動態解析它們。 在內部, ViewBag
屬性會儲存為字典中的 ViewData
名稱/值組。 (注意:在 MVC 3 的大多數發行前版本中, ViewBag
屬性的名稱 ViewModel
為 property.)
下列 ActionResult
類型和對應的協助程式方法是 MVC 3 中的新增或增強方法:
RedirectPermanent
、 RedirectToRoutePermanent
和 RedirectToActionPermanent
。 這些方法會傳回 的實例 RedirectResult
, Permanent
並將 屬性設定為 true
。根據預設,MVC 3 中的 Ajax 和驗證協助程式會使用不幹擾的 JavaScript 方法。 不幹擾的 JavaScript 可避免將內嵌 JavaScript 插入 HTML。 這可讓您的 HTML 變得更小且較不雜亂,並可讓您更輕鬆地交換或自訂 JavaScript 程式庫。 MVC 3 中的驗證協助程式預設也會使用 jQueryValidate
外掛程式。 如果您想要 MVC 2 行為,您可以使用 web.config 檔案設定來停用不幹擾的 JavaScript。 如需 JavaScript 和 Ajax 改善的詳細資訊,請參閱下列資源:
在舊版的 MVC 中,您必須從檢視明確呼叫 Html.EnableClientValidation
方法,才能啟用用戶端驗證。 在 MVC 3 中,由於預設會啟用用戶端驗證,因此不再需要此專案。 (您可以使用 web.config file.) 中的設定來停用此功能
為了讓用戶端驗證能夠運作,您仍然需要參考網站中適當的 jQuery 和 jQuery 驗證程式庫。 您可以在自己的伺服器上裝載這些程式庫,或從內容傳遞網路 (CDN) 參考這些程式庫,例如來自 Microsoft 或 Google 的 CDN。
ASP.NET MVC 3 支援新的 RemoteAttribute 類別,可讓您利用 jQuery 驗證外掛程式的遠端驗證程式支援。 這可讓用戶端驗證程式庫自動呼叫您在伺服器上定義的自訂方法,以便執行只能完成伺服器端的驗證邏輯。
在下列範例中 Remote
,屬性會指定用戶端驗證會呼叫類別上 UsersController
名為 UserNameAvailable
的動作,以驗證 UserName
欄位。
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
屬性的詳細資訊,請參閱 MSDN 程式庫中 的 how to: Implement Remote Validation in ASP.NET MVC 。
ASP.NET MVC 3 包含內建 JSON 系結支援,可讓動作方法接收 JSON 編碼的資料,並將它模型系結至 action-method 參數。 這項功能適用于涉及用戶端範本和資料系結的案例。 (用戶端範本可讓您使用在 client.) MVC 3 上執行的範本,來格式化和顯示單一資料項目或一組資料項目,可讓您輕鬆地在傳送和接收 JSON 資料的伺服器上,使用動作方法連接用戶端範本。 如需 JSON 系結支援的詳細資訊,請參閱Scott Guthrie MVC 3 Preview 部落格文章的JavaScript 和 AJAX 改善一節。
ASP.NET MVC 3 支援 DataAnnotations
中繼資料屬性,例如 DisplayAttribute
。
類別 ValidationAttribute
已在 .NET Framework 4 中改善,以支援新的 IsValid
多載,以提供目前驗證內容的詳細資訊,例如正在驗證的物件。 這可讓您更豐富的案例,您可以在其中根據模型的另一個屬性來驗證目前的值。 例如,新的 CompareAttribute
屬性可讓您比較模型兩個屬性的值。 在下列範例中 ComparePassword
,屬性必須符合 Password
欄位才能有效。
public class User
{
[Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string ComparePassword { get; set; }
}
IValidatableObject介面可讓您執行模型層級驗證,而且可讓您提供整體模型狀態的特定驗證錯誤訊息,或在模型內的兩個屬性之間提供驗證錯誤訊息。 MVC 3 現在會在模型系結時,從 IValidatableObject
介面擷取錯誤,並使用內建 HTML 表單協助程式自動標幟或醒目提示檢視中受影響的欄位。
IClientValidatable介面可讓 ASP.NET MVC 在執行時間探索驗證程式是否支援用戶端驗證。 此介面已設計成可與各種驗證架構整合。
如需驗證介面的詳細資訊,請參閱Scott Guthrie 的 MVC 3 Preview 部落格文章的模型驗證改進一節。 不過, (請注意,部落格中 「IValidateObject」 的參考應該是 「IValidatableObject」。)
ASP.NET MVC 3 更能支援套用相依性插入 (DI) ,以及整合相依性插入或控制 (IOC) 容器的反轉。 DI 的支援已新增至下欄區域:
MVC 3 支援 Common Service Locator 程式庫,以及支援該程式庫 IServiceLocator
介面的任何 DI 容器。 它也支援新的 IDependencyResolver
介面,可讓您更輕鬆地整合 DI 架構。
如需 MVC 3 中 DI 的詳細資訊,請參閱下列資源:
ASP.NET MVC 3 會自動安裝並啟用 NuGet 作為其設定的一部分。 NuGet 是免費的開放原始碼套件管理員,可讓您輕鬆地在專案中尋找、安裝及使用 .NET 程式庫和工具。 它適用于所有 Visual Studio 專案類型, (包括 ASP.NET Web Forms 和 ASP.NET MVC) 。
NuGet 可讓維護開放原始碼專案的開發人員 (,例如 Moq、NHibernate、Ninject、StructureMap、NUnit、一般、RhinoMocks 和 Elmah) 封裝其程式庫,並在線上資源庫中註冊這些專案。 然後,想要使用其中一個程式庫的 .NET 開發人員很容易找到套件,並將其安裝在他們正在處理的專案中。
透過 ASP.NET 3 Tools Update,專案範本包含預先安裝的 JavaScript 程式庫 NuGet 套件,因此可透過 NuGet 進行更新。 Entity Framework Code First 也會預先安裝為 NuGet 套件。
如需 NuGet 的詳細資訊,請參閱 NuGet 文件 (英文)。
ASP.NET MVC 自第 1 版起支援完整頁面回應的輸出快取。 MVC 3 也支援部分頁面輸出快取,這可讓您輕鬆地快取回應的區域或片段。 如需快取的詳細資訊,請參閱MVC 3 版本資訊中 Scott Guthrie 部落格文章的部分頁面輸出快取一節和MVC 3 版本資訊中的子動作輸出快取一節。
ASP.NET MVC 具有內建要求驗證,可自動協助防範 XSS 和 HTML 插入式攻擊。 不過,有時候您想要明確停用要求驗證,例如,如果您想要讓使用者在部落格專案或 CMS 內容中張貼 HTML 內容 (,例如,在部落格專案或 CMS 內容) 。 您現在可以將 AllowHtml 屬性新增至模型或檢視模型,以在模型系結期間停用每個屬性的要求驗證。 如需要求驗證的詳細資訊,請參閱下列資源:
在 ASP.NET MVC 3 中,您可以將專案範本、檢視引擎和單元測試專案架構新增至 [ 新增專案 ] 對話方塊。
ASP.NET MVC 3 Scaffolding 範本會更妥善地識別模型的主鍵屬性,並適當地處理它們,而不是舊版 MVC。 (例如,Scaffolding 範本現在會確定主鍵未 Scaffold 為可編輯的表單欄位。)
根據預設,建立和編輯 Scaffolds 現在會使用 Html.EditorFor
協助程式,而不是 Html.TextBoxFor
協助程式。 這可改善當 [ 加入檢 視] 對話方塊產生檢視時,模型上中繼資料的格式支援。
已針對 LabelFor
和 LabelForModel
Helper 方法新增方法多載。 新的多載可讓您指定或覆寫標籤文字。
在 ASP.NET MVC 3 中,您可以指出是否要控制器類別使用會話狀態,如果是的話,會話狀態應該是讀取/寫入還是唯讀。 如需無會話控制器支援的詳細資訊,請參閱 MVC 3 版本資訊。
您可以使用 AdditionalMetadata 屬性來填 ModelMetadata.AdditionalValues
入模型屬性的字典。 例如,如果檢視模型有應該只向系統管理員顯示的屬性,您可以批註該屬性,如下列範例所示:
public class ProductViewModel
{
[AdditionalMetadata("AdminOnly", true)]
public string RefundCode {get; set;}
}
轉譯產品檢視模型時,此中繼資料可供任何顯示或編輯器範本使用。 您可以解譯中繼資料資訊。
網際網路專案範本中的 AccountController 已大幅改善。
包含新的內部網路專案範本,可啟用 Windows 驗證並移除 AccountController。
訓練
學習路徑
Implement finance and operations apps - Training
Plan and design your project methodology to successfully implement finance and operations apps with FastTrack services, data management and more.