天天看點

ASP.NET MVC 5 - 将資料從控制器傳遞給視圖

在我們讨論資料庫和資料模型之前,讓我們先讨論一下如何将資料從控制器傳遞給視圖。控制器類将響應請求來的URL。控制器類是給您寫代碼來處理傳入請求的地方,并從資料庫中檢索資料,并最終決定什麼類型的傳回結果會發送回浏覽器。視圖模闆可以被控制器用來産生格式化過的HTML進而傳回給浏覽器。

控制器負責給任何資料或者對象提供一個必需的視圖模闆,用這個視圖模闆來Render傳回給浏覽器的HTML。最佳做法是:一個視圖模闆應該永遠不會執行業務邏輯或者直接和資料庫進行互動。相應的,一個視圖模闆應該隻和控制器所提供的資料進行互動。維持這種"隔離關系"可以幫助,保持代碼的幹淨、測試性和更易維護。

目前,<code>HelloWorldController</code>類中<code>Welcome</code>操作方法需要一個<code>name</code>和一個<code>numTimes</code>參數,然後直接輸出給浏覽器。相比隻傳回一個字元串,讓我們來改變控制器,來使用視圖模闆吧。視圖模闆将生成動态的HTML,這意味着您需要通過适當的方式把資料從控制器傳遞給視圖,進而才能生成動态的HTML。您可以把視圖模闆需要的動态資料 (參數)在控制器中放入到一個<code>ViewBag</code>對象中,然後視圖模闆可以通路這個對象。

完整的HelloWorldController.cs檔案如下所示:

現在<code>ViewBag</code>對象包含了資料,并将自動傳遞給視圖模闆。 接下來,您需要一個歡迎視圖模闆 !在生成菜單中,選擇生成 MvcMovie (快捷鍵 Ctrl+Shift+B) ,以確定項目編譯成功。

在Views\HelloWorld檔案夾上,右鍵單擊”添加(視圖)”,選擇”MVC 5 View Page with (Layout Razor).”

ASP.NET MVC 5 - 将資料從控制器傳遞給視圖

在 “指定項名稱 (Specify Name for Item )” 對話框, 輸入” Welcome”, 點選“确定(OK)”.    

在“選擇布局(the Select a Layout Page)”對話框,接受預設的”布局_Layout.cshtml”,并點選“确定(OK)”.    

ASP.NET MVC 5 - 将資料從控制器傳遞給視圖

MvcMovie\Views\HelloWorld\Welcome.cshtml檔案建立成功。

在Welcome.cshtml檔案裡替換标記, 您将建立一個循環,循環說多次“Hello”。

下面顯示了完整的Welcome.cshtml檔案。

運作應用程式,并浏覽下面的 URL : http://localhost:xx/HelloWorld/Welcome?name=Scott&amp;numtimes=4

ASP.NET MVC 5 - 将資料從控制器傳遞給視圖

到這裡,這是一種"M"模型,但不是資料庫的那種“M”模型。讓我們來建立一個電影資料庫吧。