天天看點

ASP.NET MVC 5 學習教程:控制器傳遞資料給視圖

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-controller">添加控制器</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-view">添加視圖</a>

<a href="http://www.qeefee.com/mvc/mvc-5-changing-views-and-layout-pages">修改視圖和布局頁</a>

<a href="http://www.qeefee.com/mvc/mvc-5-passing-data-from-the-controller-to-the-view">控制器傳遞資料給視圖</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-model">添加模型</a>

<a href="http://www.qeefee.com/mvc/mvc-5-creating-a-connection-string">建立連接配接字元串</a>

<a href="http://www.qeefee.com/mvc/mvc-5-accessing-your-models-data-from-a-controller">通過控制器通路模型的資料</a>

<a href="http://www.qeefee.com/mvc/mvc-5-examining-the-generated-code">生成的代碼詳解</a>

<a href="http://www.qeefee.com/mvc/mvc-5-working-with-localdb">使用 SQL Server LocalDB</a>

<a href="http://www.qeefee.com/mvc/mvc-5-examining-the-edit-methods-and-edit-view">Edit方法和Edit視圖詳解</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-search">添加查詢</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-new-field">Entity Framework 資料遷移之添加字段</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-validation">添加驗證</a>

<a href="http://www.qeefee.com/mvc/mvc-5-examining-the-details-and-delete-methods">Details 和 Delete 方法詳解</a>

在讨論資料庫和模型之前,讓我們先說說容控制器傳遞資料給視圖。控制器類在響應傳入的請求時被調用,控制器類是你寫代碼處理浏覽器請求、從資料庫中檢索資料、并最終決定發送什麼類型的響應給浏覽器。視圖模闆被控制器用來生成和格式化HTML響應給浏覽器。

控制器的責任是為視圖模闆提供必須的資料或對象,用來繪制HTML響應浏覽器。一個最佳實踐是:視圖模闆從來不參與業務邏輯,或直接與資料庫互動。相反的,視圖模闆僅與控制器提供的資料一起工作。保持這種“關注點分離(separation of concerns)”有助于保持代碼的整潔,可測試性和更容易維護。

目前,HelloWorldController 類中的 Welcome 方法需要兩個參數:name 和 numTimes,然後直接與将值輸出給浏覽器。讓我們修改控制器,使用視圖來替換直接相應string字元串。視圖模闆會生成一個動态響應,這意味着你需要通過控制器傳遞一些資料用來生成響應。要做到這些,你需要通過在控制器中将資料(參數)放到ViewBag對象中,視圖可以通路ViewBag對象。

回到 HelloWorldController.cs 檔案中,修改Welcome方法,在ViewBag對象中添加一個Message和NumTimes值。ViewBag是dynamic 類型的對象,你可以為它添加任何你想要的資料,ViewBag對象在你添加資料之前,不具有任何屬性。ASP.NET MVC 模型綁定系統從位址參數中自動映射命名的參數(name 和 numTimes)到方法中。完整的HelloWorldController.cs檔案如下:

代碼清單1:HelloWorldController.cs檔案

現在ViewBag對象已經包含了資料,它會被自動傳遞給視圖。

接下來,你需要一個Welcome視圖模闆。在生成菜單中,選擇生成解決方案(或使用快捷鍵 CTRL+SHIFT+B)确定項目已經編譯了。

在Views\HelloWorld 檔案夾右鍵,選擇“添加”&gt;“支架”:

圖1:添加視圖菜單

ASP.NET MVC 5 學習教程:控制器傳遞資料給視圖

在添加支架對話框中,選擇“MVC 5 View - Empty without model”。

圖2:添加支架對話框

ASP.NET MVC 5 學習教程:控制器傳遞資料給視圖

在Add View對話框中,将視圖命名為Welcome

圖3:Add View對話框

ASP.NET MVC 5 學習教程:控制器傳遞資料給視圖

檔案MvcMovie\Views\HelloWorld\Welcome.cshtml 已經建立好了。

在檔案Welcome.cshtml 的<code>&lt;h2&gt;</code>元素下添加如下的代碼,完整的代碼如下:

運作應用程式,在浏覽器中檢視如下位址:

http://localhost:xx/HelloWorld/Welcome?name=Scott&amp;numtimes=4

現在資料從URL取出來,通過模型綁定傳遞給控制器,控制器将資料封裝在ViewBag對象中,傳遞給視圖,然後視圖将資料以HTML的方式呈現給使用者。

圖4:Welcome視圖

ASP.NET MVC 5 學習教程:控制器傳遞資料給視圖

在上面的例子中,我們使用ViewBag對象将資料從控制器傳遞給視圖。在家下來的章節中,我們會使用視圖模型來傳遞資料。使用視圖模型傳遞資料比用ViewBag要好得多。

這也是模型“M”的一種,但并沒有使用資料庫。我們接下來要學習的是建立一個資料庫,建立一個真正意義的視圖模型。

本文轉自齊師傅部落格園部落格,原文連結:http://www.cnblogs.com/youring2/p/mvc-5-passing-data-from-the-controller-to-the-view.html,如需轉載請自行聯系原作者