跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 ASP.NETMVCFramework 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
ASP.NETMVCFramework
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''ASP . NET MVC Framework'''是略仔軟佇咧 ASP . NET 中所添加的一組類別庫,這組類別庫會使用 Model-View-Controller 的設計模式來開發 ASP . NET 的應用程式。伊佮現有的 ASP . NET 應用程式並無衝突,所以兩个人是會當並行的。ASP . NET MVC Framework 予人包裝佇 System . Web . Mvc . dll 中,並利用 ASP . NET Routing 來支援動作流和 URL Rewriting 的能力,予伊會當閣較倚 Web 的發展佮 Web 二鋪零的特性。對這多數有 ASP 開發經驗的開發人員來講看起來較袂生份,但是對著無接觸過像 ASP、PHP、JSP、Perl 這是 Web 開發工具的開發人員來講,相對的無簡單入門。ASP . NET MVC 的頭一个版本佇二空空九年三月十七日釋出 RTM 版本,上新的 ASP . NET MVC 五鋪二是二空一四年十二月二十四正式發行。 微軟於 ASP . NET Core 中提出後一代的 MVC 框架,這號做 ASP . NET Core MVC。 ==原理== ASP . NET MVC 是遵循軟體模式的 Model-View-Controller 來發展,其中 Model 講的是資料抑是業務邏輯元件,View 是呈現予使用者看的資訊,而且 Controller 是欲接取來自使用者的指令佮資料,並將 Model 佮 View 做整合的控制器,做侍服器接著著 ASP . NET MVC 應用程式的要求的時陣,侍服器(IIS)可以先用 UrlRoutingModule ( ASP . NET Routing 的 HTTP 模組 ),由伊來解析敢有包括 ASP . NET MVC 應用程式的 URL,若有,著會產生一个'''MvcRouteHandler'''東西,這个物件會裝載執行的必要資訊,並且會呼叫包括佇內底 URL 中的 Controller 的 Execute 方法來執行工課。 '''Controller'''物件是因為 ` IController ` 介面的規則所定義,提供針對 HTTP 要求做回應的一个執行工具,佇咧 ASP . NET MVC 中已經實作一个預設的類別 Controller,提供必要的基礎功能,另外嘛發展一个 Controller 工場,這號做 Controller Factory,以 ` IControllerFactory ` 介面定義,亦提供了'''DefaultControllerFactory''',開發人員會當用基本的類別以及利用𪜶來衍生家己的 Controller 抑是 Controller Factory 來實作家己的控制器邏輯功能。 '''Model'''物件攏是為著 ASP . NET MVC 提供資料,毋過伊無基礎類別,是使用 . NET Framework 一般性的資料結構抑是這馬現代的 ADO . NET 資料物件,像講 List、Dictionary、DataTable、DataReader 佮 DataSet 等咧,當然嘛會當是家己開發的商業物件,遮的資料會透過 ASP . NET MVC 的'''ModelBinder'''這工具類別來佮 Controller 整合,ModelBinder 本身是支援泛型 ( Generic ) 的,因為各種型別的資料伊攏會當使用。佇咧 ASP . NET MVC 中提供一个'''DefaultModelBinder'''東西,會當支援大多數 . NET Framework 資料型別,以及陣列佮已經實作的親像 IList、IDictionary 以及 ICollection 等介面的東西。 Model 會佇咧 Controller 執行動作的時,做為一个 ActionResult 物件的方式傳轉來予 MvcHandler 東西,這个物件就會指定欲顯示 View 東西,親像下列程式碼所示講: '''View'''東西以 ` IView ` 佮 ` IViewDataContainer ` 等介面為主,並且以 ASP . NET 的各式頭前捀介面為主要輸出工具,是因為 MVC 的 View 彈性化設計考量,以往佇咧 ASP . NET Web Form 的程式碼佮 HTML 分離模式會閣存在無閣有,是將程式碼佮 HTML 混合的方式設計,予開發人員會當閣較精確的著 View 進行控制,佇目前 ASP . NET MVC 支援的 View 有下列幾種: * . aspx 網頁,由'''ViewPage'''來支援。 * . ascx 使用者控制項,由'''ViewUserControl'''來支援。 * . master 主版頁面,由'''ViewMasterPage'''來支援。 彼每一个 View 物件攏會內含一个泛型的參數,用來裝載欲呈現的資料 ( 即 Model ),然後使用類似下跤的方式來呈現資料: ==技術== 佇咧 ASP . NET MVC 架構內底,除了 Controller、Model 佮 View 三个主要部份以外,閣包括真濟技術以予這三層得整合並互動的運作。 ===Controller=== Controller 佇咧 ASP . NET MVC 應用程式中是負責中控的角色,嘛是對使用者捀 HTTP 要求的處理核心,所以有誠濟處理佮轉向 HTTP 要求的輔助技術佇咧 Controller 層次攏會用著。 ====ASP . NET 路是由技術==== 用來過濾使用者捀要求的 URL,而且藉著定義好的路由來表 ( route table ) 共要求導向至正確的 MVC Controller,並呼叫 Controller 中的 Execute 方法執行,而且 Execute 彼方法會共 HTTP 動作佮實際執行的指令交予正確的函式來執行。而通常伊一个 MVC 應用程式的 URL 攏會是類似按呢的 URL 格式: ` ` ` http : / / 一百二十七孵空 . 空七一 / ControllerName / ActionName / ActionParameters ` ` ` 而且 MvcRouteHandler 會拆解 URL,揣出目標的 Controller,而且將 ActionName 以及 ActionParameters 傳予 Controller 中負責的函式(以 ActionName 來指定)。 比如講下列的 URL 會傳遞予 BlogController 的 GetList 方法: ` ` ` http : / / 一百二十七孵空 . 空七一 / Blog / GetList ` ` ` ====動作佮方法直接整合==== ASP . NET MVC 利用中介資料的技術,直接共方法對應著指定的 HTTP 動詞 ( GET / POST / PUT / DELETE / HEAD 等 ),MvcHandler 會判斷要求的類別,閣共伊交予 URL 中指定的方法來處理。目前 MVC Framework 會當用下列的方式指定(攏包含講佇 HttpVerbs 列舉型別中): * ` HttpVerbs . Get ` * ` HttpVerbs . Post ` * ` HttpVerbs . Delete ` * ` HttpVerbs . Put ` * ` HttpVerbs . Head ` ====共資料模型佮展示層直接包裝==== ` ViewPage `、` ViewMasterPage `、` ViewUserControl ` 等展示物件攏支援泛型物件,會當直接裝載 Model 資料傳佇咧送到前端輸出,會當簡單來處理 Model 佮 View 之間整合的動作之間,只要一个參數就會當將資料傳予 View: ===Model=== 佇咧 ASP . NET MVC 中,Model 相對無欲設,會使使用內建的資料結構猶閣有自訂的資料類別,嘛會當是一个商業的物件,所以 Model 的𩚨度真大,除了前講的資料結構外,微軟新發展的一寡資料存取方式嘛會當應用佇咧 Model 中,像講 ADO . NET Entity Framework 佮 LINQ to SQL 等技術。 另外咧,MVC 咧侍服捀資料驗證中,提供矣 ` ViewDataDictionary ` 類別,這類別有一个'''ModelState'''屬性,內含著 ` ModelStateDictionary ` 類別,開發人員會當用這个類別來控制資料驗證的結果,而且 View 中輸出驗證訊息的部份會佮此類別有關聯,像下列的程式: 佇咧 ASP . NET MVC 二孵空中,新增加一个會當直接予 MVC Framework 針對資料欄位進行驗證控制的模型,這號做 Model Validation,伊融合了在矣 . NET Framework 三人五 SP 一發表的 ASP . NET Dynamic Data Framework 中 Data Annotations ( 資料記號 ) 的特性,予開發人員會使只利用標記的方式來執行驗證,或者是利用自訂的程式碼來擴充資料記號的驗證行為。 ===View=== 因為 View 是直接呈現予使用者,因此佮使用者互動的部份攏愛由此層處理,包含資料的輸出猶閣有使用者捀操作為主的回應(譬如講令碼)等。 ====HTML 工具類別==== HTML 家私類別佇咧 View 中間是重要的輸出家私,伊內底起輔助產生 HTML 標籤的工具辦法,多數的 HTML 語法攏會當利用伊來產生,包含親像連結 ( < a > )、表單 ( < form > ) 猶閣有表單控制項等等。HTML 工具是以 ` HtmlHelper ` 類別為核心,閣配合 System . Web . Mvc . Html 號名空間的方法,以延伸方法 ( Extension Method ) 的方式,予產生 HTML 的程式就有如呼叫方法般簡單: ====資料驗證==== View 的 HTML 工具會當配合 Model 處理資料驗證的結果,佇咧 ASP . NET 中常用的 ValidationSummary 佇遮嘛支援,而且 MVC 的架構予驗證資訊的輸出嘛閣較𩚨: ====無仝類型的輸出==== 彼每一个 Controller 中負責回應的方法,攏會回傳一个 ActionResult 物件的資訊,ActionResult 是一个執行結果物件的封裝體,當 MvcHandler 執行指令接著 ActionResult 時,就會依照伊的內容來輸出資料。目前 MVC Framework 支援的 ActionResult 有下列幾種: * ` ViewResult ` 東西,這个物件內底載矣 ` IView ` 介面的資訊,以及 ` IViewEngine ` 的資訊,實際產生輸出資料的會是 IViewEngine,佮其指示的 View 東西。 * ` PartialViewResult ` 東西,佮 ` ViewResult ` 相仝,但是伊回傳的是 " 部份展示 ",就算用者控制項的 View。 * ` ContentResult ` 東西,裝載由使用者自訂的 Content-Type 佮資料。 * ` EmptyResult ` 東西,表示不回傳任何物件。 * ` HttpUnauthorizedReuslt ` 東西,表示動作無予授權(即 HTTP 四百空一)的錯誤訊息。 * ` JavaScriptResult ` 東西,表示回傳的是 JavaScript 指令碼。 * ` JsonResult ` 東西,表示回傳的是 JSON 資料。 * ` FileResult ` 東西,表示回傳的是一个檔案的資料。 * ` RedirectResult ` 東西,表示回傳的是一个重導向 ( HTTP Redirect ) 指令。 * ` RedirectToRouteResult ` 東西,佮 RedirectResult 類似,但是伊是重導向予一个 Route 的路徑。 透過多類型的 ActionResult,開發人員會當自由決定欲回傳的資料的類型佮格式。 ==應用== 目前小可仔軟有一个 Oxite 專案,是使用 ASP . NET MVCFramework 所開發的部落格 ia̋n-jín,啊若這个案已經予微微仔應用平台所採用,像講 MIX Online、PDC 二千空九、MIX Video 等官方網站攏是採用伊來開發。另外咧,stackoverflow . com 以及 codeplex . com 這兩个網站嘛是採用 ASP . NET MVC Framework。 ==版本的過程== ==授權== ASP . NET MVC Framework 雖然是 ASP . NET 的一部份,猶毋過伊的原始碼是透過 Microsoft Public License ( MS-PL ) 的授權模式公開,所以佇遮 MS-PL 授權的範圍內底,任何人是會當去檢視佮修改伊的原始碼的。 ==ASP . NET MVC Razor Engine== 微軟佇咧二空一空年七月初二由 Scott Guthrie 發表新的 MVC 畫製 ia̋n-jín ( Render Engine ):Razor Engine,伊已經內底建佇咧 ASP . NET MVC 三更空中發布,伊具有下列功能: 一 . 閣較輕量化而且直覺的語法,減少佇咧 View 中輸出資料的時陣使用的語法,予 View 的指令更加簡潔,像使用 " @ " + 變數名稱的方式,就會使輸出程式中的變數,毋免閣用 < % % > 來設定。若程式有足濟行,會用得使用 @ { } 的方式來設定。 二 . 容易學習。 三 . 會當相容佇這馬的程式語言 ( ex : C # )。 四 . 透過 Visual Studio,可享有 Intellisense 能力。 五 . 會當透濫 HTML 佮程式語言指令。 六 . 通用各種無仝款的文字編輯器編輯。 七 . 有單元測試的能力。 ==參考資料== ==外部網站== * ASP . NET MVC 官方網站 * MSDN ASP . NET Virtual Labs * ASP . NET MVC Documentations ===View engines=== * MvcContrib * StringTemplate View Engine * Spark * NDjango * Naked Objects MVC * Razor(按算 ASP . NET MVC 三更零匯入) [[分類: 待校正]]
返回到「
ASP.NETMVCFramework
」。