1. 程式人生 > 其它 >ASP.NET MVC學習筆記04資料傳遞

ASP.NET MVC學習筆記04資料傳遞

上一篇的末尾講到了,在瞭解模型之前,先來看看ASP.NET MVC是如何將資料從控制器傳遞給檢視的。


簡單梳理一下:

控制器想要請求的URL,控制器類是給您寫程式碼來處理傳入請求的地方,並從資料 庫中檢索資料,並最終決定什麼型別的返回結果會發送回瀏覽器。檢視模板可以被控制器 用來產生格式化過的HTML從而返回給瀏覽器.

控制器負責給任何資料或者物件提供一個必需的檢視模板,用這個檢視模板來Render返回給瀏覽器的HTML。

最理想的模式下:一個檢視模板應該永遠不會執行業務邏輯或者直接和資料庫進行互動。相應的,一個檢視模板應該只和控制器所提供的資料進行互動。維持這種”隔離關係”可以幫助,保持程式碼的乾淨、測試性和更易維護。

比如,最開始的控制器的講解時HelloController類中的Welcome方法從瀏覽器獲取一個name和numTimes的引數,然後直接輸出。如果使用檢視,檢視模板將生成動態的HTML,也就是說,需要通過合適的方式把資料從控制器傳遞給檢視,從而生成動態HTML。如何實現呢,可以吧檢視模板需要的動態資料(引數)在控制器中存放到一個ViewBag物件中,然後檢視模板來訪問這個物件,看下具體操作。

注意這裡的型別是ActionResult ,將MessageNumTimes的值 新增到ViewBag物件裡。ViewBag是一個動態的物件,所以在沒有給 ViewBag放置屬性時,它沒有任何屬性,您可以把任何您想放置的物件放入到ViewBag

物件中。而MVC會自動將URL中的Query String對映到方法的引數中去。

然後來在View中給Hello新增一個檢視,和前面一樣,選中Views/Hello 資料夾,右鍵新增——帶有佈局的MVC5檢視頁(Razor)。在Welcome的對話方塊中填入Welcome確認。選擇佈局頁,仍然選擇Views/Shared/_Layout.cshtml .

模型繫結(model binder) 使得資料從URL傳遞給控制器。控制器將資料裝入到ViewBag物件中,通過該物件傳遞給檢視。然後檢視為使用者生成顯示所需的HTML。

在上面的示例中,使用了 ViewBag物件把資料從控制器傳遞給了檢視。在後面的文章中,將使用檢視模型來將資料從一個控制器傳遞到檢視中。用檢視模型來傳遞資料,這一般是首選的辦法。

到這裡,這是一種”M”模型,但不是資料庫的那種“M”模型。

下一篇,開始正式講解基於資料模型和模型類來實現的M——Model.