ASP.NET MVC 5 学习教程:控制器传递数据给视图
起飛網(wǎng) ASP.NET MVC 5 學(xué)習(xí)教程目錄:
- 添加控制器
- 添加視圖
- 修改視圖和布局頁
- 控制器傳遞數(shù)據(jù)給視圖
- 添加模型
- 創(chuàng)建連接字符串
- 通過控制器訪問模型的數(shù)據(jù)
- 生成的代碼詳解
- 使用 SQL Server LocalDB
- Edit方法和Edit視圖詳解
- 添加查詢
- Entity Framework 數(shù)據(jù)遷移之添加字段
- 添加驗證
- Details 和 Delete 方法詳解
在討論數(shù)據(jù)庫和模型之前,讓我們先說說容控制器傳遞數(shù)據(jù)給視圖。控制器類在響應(yīng)傳入的請求時被調(diào)用,控制器類是你寫代碼處理瀏覽器請求、從數(shù)據(jù)庫中檢索數(shù)據(jù)、并最終決定發(fā)送什么類型的響應(yīng)給瀏覽器。視圖模板被控制器用來生成和格式化HTML響應(yīng)給瀏覽器。
控制器的責(zé)任是為視圖模板提供必須的數(shù)據(jù)或?qū)ο?#xff0c;用來繪制HTML響應(yīng)瀏覽器。一個最佳實踐是:視圖模板從來不參與業(yè)務(wù)邏輯,或直接與數(shù)據(jù)庫交互。相反的,視圖模板僅與控制器提供的數(shù)據(jù)一起工作。保持這種“關(guān)注點分離(separation of concerns)”有助于保持代碼的整潔,可測試性和更容易維護。
目前,HelloWorldController 類中的 Welcome 方法需要兩個參數(shù):name 和 numTimes,然后直接與將值輸出給瀏覽器。讓我們修改控制器,使用視圖來替換直接相應(yīng)string字符串。視圖模板會生成一個動態(tài)響應(yīng),這意味著你需要通過控制器傳遞一些數(shù)據(jù)用來生成響應(yīng)。要做到這些,你需要通過在控制器中將數(shù)據(jù)(參數(shù))放到ViewBag對象中,視圖可以訪問ViewBag對象。
回到 HelloWorldController.cs? 文件中,修改Welcome方法,在ViewBag對象中添加一個Message和NumTimes值。ViewBag是dynamic 類型的對象,你可以為它添加任何你想要的數(shù)據(jù),ViewBag對象在你添加數(shù)據(jù)之前,不具有任何屬性。ASP.NET MVC 模型綁定系統(tǒng)從地址參數(shù)中自動映射命名的參數(shù)(name 和 numTimes)到方法中。完整的HelloWorldController.cs文件如下:
代碼清單1:HelloWorldController.cs文件
using System.Web; using System.Web.Mvc;namespace MvcMovie.Controllers {public class HelloWorldController : Controller{public ActionResult Index(){return View();}public ActionResult Welcome(string name, int numTimes = 1){ViewBag.Message = "Hello " + name;ViewBag.NumTimes = numTimes;return View();}} }現(xiàn)在ViewBag對象已經(jīng)包含了數(shù)據(jù),它會被自動傳遞給視圖。
接下來,你需要一個Welcome視圖模板。在生成菜單中,選擇生成解決方案(或使用快捷鍵 CTRL+SHIFT+B)確定項目已經(jīng)編譯了。
在Views\HelloWorld 文件夾右鍵,選擇“添加”>“支架”:
圖1:添加視圖菜單
在添加支架對話框中,選擇“MVC 5 View - Empty without model”。
圖2:添加支架對話框
在Add View對話框中,將視圖命名為Welcome
圖3:Add View對話框
文件MvcMovie\Views\HelloWorld\Welcome.cshtml? 已經(jīng)創(chuàng)建好了。
在文件Welcome.cshtml? 的<h2>元素下添加如下的代碼,完整的代碼如下:
@{ ViewBag.Title = "Welcome"; }<h2>Welcome</h2><ul>@for (int i = 0; i < ViewBag.NumTimes; i++){<li>@ViewBag.Message</li>} </ul>運行應(yīng)用程序,在瀏覽器中查看如下地址:
http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4
現(xiàn)在數(shù)據(jù)從URL取出來,通過模型綁定傳遞給控制器,控制器將數(shù)據(jù)封裝在ViewBag對象中,傳遞給視圖,然后視圖將數(shù)據(jù)以HTML的方式呈現(xiàn)給用戶。
圖4:Welcome視圖
在上面的例子中,我們使用ViewBag對象將數(shù)據(jù)從控制器傳遞給視圖。在家下來的章節(jié)中,我們會使用視圖模型來傳遞數(shù)據(jù)。使用視圖模型傳遞數(shù)據(jù)比用ViewBag要好得多。
這也是模型“M”的一種,但并沒有使用數(shù)據(jù)庫。我們接下來要學(xué)習(xí)的是創(chuàng)建一個數(shù)據(jù)庫,創(chuàng)建一個真正意義的視圖模型。
本文轉(zhuǎn)自起飛網(wǎng),原文地址:http://www.qeefee.com/mvc/mvc-5-passing-data-from-the-controller-to-the-view
轉(zhuǎn)載于:https://www.cnblogs.com/youring2/p/mvc-5-passing-data-from-the-controller-to-the-view.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC 5 学习教程:控制器传递数据给视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IE的documentMode属性
- 下一篇: ASP.NET MVC从视图传递多个模型