1. 程式人生 > 實用技巧 >一步一步學習MVC(模型-檢視-控制器)在7天,第四天

一步一步學習MVC(模型-檢視-控制器)在7天,第四天

MVC 2是安靜的老和本文是多年後寫的。我們建議您從我們開始閱讀新鮮學習MVC 5從這裡一步一步系列:http: / / www.codeproject.com/Articles/866143/Learn-MVC-step-by-step-in-days-Day 內容 那麼,議程是什麼? 在第4天,我們將檢視JSON, Jquery,Aysnch控制器和與MVC的會話管理。 得到連結的其他部分的asp.net MVC教程如下:- 第一天:控制器、強型別的檢視和助手類 http://www.codeproject.com/Articles/207797/Learn-MVC-Model-view-controller-Step-by-Step-in-7 第二天:單元測試、路由和出站url http://www.codeproject.com/Articles/259560/Learn-MVC-Model-view-controller-Step-by-Step-in-7 第三天:區域性檢視、資料註釋,剃鬚刀,身份驗證和授權 http://www.codeproject.com/Articles/375182/Learn-MVC-Model-View-Controller-Step-by-Step-in-4 第四天:- JSON, JQuery、狀態管理和中控制器 http://www.codeproject.com/Articles/667841/Learn-MVC-Model-view-controller-Step-by-Step-in-3 第五天:捆綁、縮小檢視模型、領域和異常處理 http://www.codeproject.com/Articles/724559/Learn-MVC-Model-view-controller-Step-by-Step-in-7 第六天:顯示模式,MVC OAuth,模型繫結、佈局和自定義檢視引擎 http://www.codeproject.com/Articles/789278/Learn-MVC-Model-view-controller-Step-by-Step-in-d 實驗15:- JSON, MVC和Jquery 如果你是一個新的JSON請閱讀這之前繼續這個實驗室,什麼是JSON ? 所以在這個實驗中,我們將以JSON格式從MVC中公開一個簡單的“Customer”物件,並使用Jquery使用相同的格式。 對於這個實驗室,請確保專案是使用基本專案模板建立的,以便必要的Jquery庫包含在MVC專案中。 步驟1:-建立一個簡單的客戶模型 因此,第一步是在MVC專案中建立一個簡單的“Customer”類。 隱藏,複製Code

public class Customer
    {
        private string _CustomerCode;
        public string CustomerCode
        {
            get { return _CustomerCode; }
            set { _CustomerCode = value; }
        }
    } 

第2步:—將客戶物件公開為JSON 那麼,議程是什麼? 第一天:控制器、強型別的檢視和助手類 第二天:單元測試、路由和出站url 第三天:區域性檢視、資料註釋,剃鬚刀,身份驗證和授權 第4天:- JSON, JQuery,狀態管理和非同步控制器 第五天:捆綁、縮小檢視模型、領域和異常處理 第6天:-顯示模式,MVC OAuth,模型繫結,佈局和自定義檢視引擎實驗室15:- JSON,MVC和Jquery 步驟1:-建立一個簡單的客戶模型 第2步:—將客戶物件公開為JSON 第3步:-使用jquery中的JSON控制器 第4步:-執行應用程式並檢視資料 實驗16:- MVC中的會話管理(ViewData,ViewBag,TempData和會話變數) 步驟1:建立兩個控制器“DefaultController1”和“DefaultController2”。 步驟2:-設定Session, tempdata, viewdata和viewbag 步驟3:-讀取會話、tempdata、viewdata和viewbag值 實驗室17:-非同步控制器 從AsyncController類繼承 第2步:-標記方法Async追加 步驟3:-建立完成的方法 第四步:-確保建立“一些重量級的方法”。aspx”檢視 第五步:-跑步並享受 第五天是什麼? 50個MVC訪談問題和答案 你對MVC是全新的嗎? 要以JSON格式公開客戶物件,我們需要使用“JsonResult”,如下面的程式碼片段所示。 隱藏,複製Codepublic JsonResult getJson() { Customer obj = new Customer(); obj。CustomerCode = " c001”; 返回Json (obj, JsonRequestBehavior.AllowGet); } 請執行以上JSON操作執行控制器以檢查JSON結果是否正確顯示。如果你使用的是chrome瀏覽器,它會在瀏覽器上顯示,如果是ie瀏覽器,它會吐出一個檔案。 第3步:-使用jquery中的JSON控制器 如果你是新的Jquery,請閱讀這是什麼是Jquery ? 下一步是使用MVC檢視在Jquery中使用JSON資料。繼續新增一個檢視例如,我的檢視名是" LearnJquery.aspx " 首先,在ASPX頁面的頂部新增Jquery庫。如果您在專案中沒有找到jquery庫,這意味著您沒有使用基本模板建立MVC專案。 隱藏,Code<影印件;指令碼src = " . . / . . /指令碼/ jquery-1.8.2.js”祝辭& lt; / script> 然後,您可以呼叫使用“getJson”方法以JSON格式公開的控制器,如下所示。它有三個引數:- “getJson”中的第一個引數是具有完整控制器/動作路徑格式的MVC JSON URL。第二個引數是要傳遞的資料。現在它是NULL,因為我們更感興趣的是獲取JSON資料而不是釋出資料。最後一個引數是回撥方法(“Display”),一旦我們從控制器獲得JSON資料,它就會被呼叫。的“顯示”功能也可用下面的程式碼片段。我只是在屬性名上放了一個警告。供您參考,您可以看到我剛才是如何鍵入“data”的。JSON資料被自動轉換成javascript物件。 隱藏,複製程式碼美元。getJSON(“/ Json / getJSON”,null,顯示); 函式顯示(資料) { 警報(data.CustomerCode); } 完整的MVC檢視HTML如下所示。我建立了一個簡單的HTML按鈕,在click事件上我呼叫了一個“getJson”javascript方法,該方法呼叫JSON控制器並在javascript警報中顯示JSON資料。 隱藏,複製Code<指令碼語言=“javascript”比; getJson函式(){ 美元。getJSON(“/ Json / getJSON”,null,顯示); 返回true; } 函式顯示(資料) { 警報(data.CustomerCode); } & lt; / script> <input type="button" value="See Json data" onclick="return getJson();"/> 這個檢視是我使用“DisplayJson”操作呼叫的。 隱藏,複製Codepublic類JsonController: Controller { 公共ActionResult DisplayJson () { 返回檢視(“LearnJquery”); } } 第4步:-執行應用程式並檢視資料 在您完成了所有艱苦的工作之後,就可以點選“DisplayJson”操作來檢視執行中的美了。 實驗16:- MVC中的會話管理(ViewData,ViewBag,TempData和會話變數) MVC的主要目標是建立web應用程式,而web應用程式使用HTTP協議。HTTP協議本質上是無狀態的。因此,當你傳送一個請求到MVC應用程式時,它會服務於請求並忘記請求。下一次,當同一個使用者傳送請求時,MVC將其視為一個完整的新請求。 現在想想下面的情況:- 終端使用者傳送請求到MVC站點。MVC傳送一個登入頁面。使用者輸入正確的細節並將資料傳送到MVC應用程式。MVC驗證使用者併發送站點的主頁。MVC應用程式現在忘記了關於使用者的一切,因為它是無狀態的。現在使用者單擊一個主頁連結。這是傳送到MVC應用程式,因為MVC應用程式已經忘記了關於使用者的一切,他再次傳送一個登入頁面進行身份驗證…使用者會覺得很奇怪… 簡而言之,我們需要某種機制來幫助我們記住MVC請求和響應之間的狀態。 在MVC中有三種維護狀態的方法,這些方法可以根據你導航的層來使用。 Temp資料:-幫助維護單個請求和響應的重定向資料。重定向可以是從控制器到控制器或從控制器到檢視。 檢視資料:-當你從控制器移動到檢視時,幫助維護資料。 檢視包:-它是一個動態包裝周圍的檢視資料。當你使用“Viewbag”時,型別轉換是不需要的。它在內部使用動態關鍵字。 會話變數:通過使用會話變數,我們可以維護資料,直到瀏覽器關閉。 讓我們通過一個演示來演示上面的基本原理。 步驟1:建立兩個控制器“DefaultController1”和“DefaultController2”。 新增兩個控制器“DefaultController1”和“DefaultController2”。 步驟2:-設定Session, tempdata, viewdata和viewbag 在“Action1”中的“Default1Controller”中,我們設定了會話、tempdata、viewdata和viewbag值,如下面的程式碼片段所示。一旦我們設定了這些值,我們將重定向到屬於“Controller2”的動作“SomeOtherAction”。 隱藏,複製Codepublic類Default1Controller: Controller { // / /得到:/ Default1 / 公共ActionResult Action1 () { 會話(“Session1) =“UntilBrowserCloses”; TempData[“FortheFullRequest”]=“FortheFullRequest”; 顯示資料(“Myval”)=“ControllertoView”; ViewBag。MyVal = " ControllertoView”; 返回RedirectToAction(“SomeOtherAction”、“Default2”); }} 步驟3:-讀取會話、tempdata、viewdata和viewbag值 在" Default2Controller "中,我們將嘗試讀取" Default1Controller "中設定的值。一旦讀取了這些值,我們就呼叫一個名為“SomeView”的檢視。 請注意,我在重定向到檢視之前設定了“ViewData”和“ViewBag”。 隱藏,複製Codepublic類Default2Controller: Controller { // / /得到:/ Default2 / 公共ActionResult SomeOtherAction () { ("FortheFullRequest"]); 字串str2 = Session["Session1"].ToString(); (ViewData["Myval"]); 顯示資料(“Myval”)=“ControllertoView”; ViewBag。MyVal = " ControllertoViewCollection”; 返回檢視(“SomeView”); } } “SomeView”檢視只是顯示在“TempData”、“ViewData”、“ViewBag”和“Session”中出現的資料。 隱藏,複製Code<%= TempData["FortheFullRequest"] %><br /> <%= ViewData["Myval"] %> > 會話(“Session1) & lt; % = %比; & lt; % = ViewBag。MyVal %比; & lt; a href = " / Default1 / Action1”祝辭Click< / a> 讓我們在控制器動作中放入除錯點,點選Default1 controller和Action1 action http://localhost:1203/default1 /Action1。在這個動作會話中,tempdata,viewdata和viewbag被載入。下面是帶有資料的觀察視窗。 現在從這裡我們重定向到controller2動作“SomeOtherAction”。 在controller2中,你可以看到get“TempData”和“Session”變數,而不是“ViewBag”和“ViewData”(見“str3”和“str4”被設定為null)。換句話說,“ViewData”和“ViewBag”不會在重定向中持久化資料,而“TempData”和“Session”變數會。 在呼叫檢視“SomeView”之前,我已經設定了一些資料“ViewData”和“ViewBag”。 當檢視被呼叫時,我們可以看到所有的資料。換句話說,“ViewData”和“ViewBag”將資料從控制器持久化到檢視。tempdata和session也有持久化資料。 現在,當檢視呼叫時,我保留了一個從“Controller1”呼叫“Action1”的click hyper連結。這是模擬一個新的請求。 當我們點選連結時。所有其他變數將關閉,只有會話變數將保留,見下圖。這意味著“會話”變數可以在請求之間持久存在。 下面是一個彙總表,顯示了不同的永續性機制。 維護視訊系統之間資料/ viewbag tempdata(單一請求)會話控制器,控制器沒有是的是的控制器,檢視是的是的是的檢視控制器不肯定的 實驗室17:-非同步控制器 說到底,MVC應用程式就是託管在IIS中的web應用程式。現在,當任何請求到達MVC控制器時,它從執行緒池中拉出一個執行緒併為該請求服務。換句話說,IIS web伺服器維護一個執行緒池,而不是一次又一次地從頭建立執行緒以獲得性能優勢。 讓我們假設web伺服器的執行緒池大小為2。這只是一個假設因為池的大小是2只是一個假設。但是為了簡單起見,請考慮執行緒池大小為2。 假設第一個請求到達站點,IIS從執行緒池中取出一個現成的執行緒物件,並開始為該請求提供服務。同時,假設第二個請求進入,IIS再次從執行緒池中取出一個執行緒,並開始為第二個請求提供服務。 現在有趣的是當第三個請求進來時。IIS web伺服器池中沒有更多的執行緒物件,因為這些執行緒物件已經服務於“request1”和“request2”。所以他只是將第三個請求移動到等待模式,或者伺服器可以傳送“503 busy”訊息給客戶端。 這種情況稱為“執行緒短缺”。可以通過“非同步”請求來克服執行緒短缺的情況。因此,請求進入後,立即以“非同步”方式處理請求,並立即釋放服務於該請求的執行緒。 因此,為了避免這種情況,我們可以通過使我們的控制器“非同步”來實現相同的效果。 下面是一個演示MVC執行緒飢餓的視訊。 因此,讓我們一步一步地瞭解如何實現MVC非同步控制器。 從AsyncController類繼承 考慮下面的控制器類“HeavyController”,它有一個動作“SomeHeavyMethod”,該動作等待20秒。讓我們來理解如何讓這個簡單的控制器成為aasynch控制器。 隱藏,複製Codepublic類的HeavyController: Controller { // / /得到:/重/ 公共ActionResult SomeHeavyMethod () { thread . sleep (20000); 返回檢視(); } } 因此,第一步是從“AsyncController”類繼承。 隱藏,複製Codepublic類的HeavyController: AsyncController { } 第2步:-標記方法Async追加 下一步是在方法後面新增“Async”單詞。所以你可以看到“SomeHeavyMethodAsync”已經被更改為“SomeHeavyMethodAsync”。 沉重的邏輯程式碼,比如“執行緒”。Sleep”被轉移到另一個方法,該方法是使用“SomeHeavyMethodAsync”中的任務並行庫呼叫的。 每當一個“任務”或一個“執行緒”啟動時,我們使用“AsynchManager”遞增未完成的操作計數器,而每當一個多執行緒任務完成時,我們遞減計數器。 隱藏,複製程式碼公共類HeavyController: AsyncController { 公共空間SomeHeavyMethodAsync () { AsyncManager.OutstandingOperations.Increment (); 的任務。(新行動(重型)); } 公共空間重() { thread . sleep (20000); AsyncManager.OutstandingOperations.Decrement (); } } 步驟3:-建立完成的方法 現在,一旦所有的多執行緒任務完成,未完成的操作為零,我們需要返回檢視。我們所需要的也是這樣d建立一個附加了“Completed”單詞的動作結果方法。當所有未完成操作為零時呼叫此方法。 隱藏,複製Codepublic ActionResult SomeHeavyMethodCompleted() { 返回檢視(); } 第四步:-確保建立“一些重量級的方法”。aspx”檢視 還要確保新增帶有文字的“SomeHeavyMethod”檢視。 隱藏,複製Code< html> & lt;頭runat = " server "比; meta name="viewport" content="width=device-width" /> & lt; title>一些重型method< / title> & lt; / head> & lt; body> & lt; div> 這是在一段時間後加載… & lt; / div> & lt; / body> & lt; / html> 第五步:-跑步並享受 現在嘗試點選“Heavy/SomeHeavyMethod”並檢視輸出。我建議您度量“執行緒排隊”,以瞭解非同步控制器的好處。觀看本視訊,瞭解如何度量“排隊的執行緒”http://www.youtube.com/watch?v=wvg13n5V0V0。 第五天是什麼? 還在努力。 最後,你可以觀看我關於WCF、Silver light、LINQ、WPF、設計模式、實體框架等不同章節的c#和MVC培訓視訊。請不要錯過我的。net和c#面試問題和答案手冊。 用於與各種主題相關的技術培訓,包括ASP。請聯絡[email protected]或訪問www.sukesh-marla.com 從MVC 5開始 如果你想開始與MVC 5開始與下面的視訊學習MVC 5在2天。 50個MVC訪談問題和答案 如果你要去面試,你可以閱讀我的50個重要的MVC面試問題回答文章http://www.codeproject.com/articles/556995/model-view-controller-mvc-interview-question- and 你對MVC是全新的嗎? 如果你是一個全新的人,我建議從以下4個視訊開始,大約10分鐘,這樣你就可以快速進入MVC。 實驗1:-一個簡單的Hello world ASP。淨MVC應用程式。 實驗2:在這個實驗中,我們將看到如何使用檢視資料在控制器和檢視之間共享資料。 實驗3:在這個實驗中,我們將建立一個簡單的客戶模型,用一些資料進行處理,並在檢視中顯示相同的資料。 實驗4:在這個實驗中,我們將建立一個簡單的客戶資料輸入螢幕,並在檢視上進行一些驗證。 本文轉載於:http://www.diyabc.com/frontweb/news1884.html