ASP.NET MVC企業級程序設計 第2章 數據傳遞

一、控制器向視圖傳值(一)

1、控制器向視圖傳遞數據,常見三種爲:

1) ViewData
2) ViewBag
3) TempData

其中ViewData與ViewBag爲同一集合,僅存在語法上的差異。

2、ViewData:

只在一次HTTP請求中有效,當請求結束後會自動清空其值;生命週期短,類似WebForm的Page對象,因此無法跨Action方法傳遞數據。

3、TempData:

TempData利用Session保存數據;生命週期長,可以跨Action方法傳遞數據,但讀取一次後會自動清除。

4、ViewBag:
ViewBag屬性返回的實際類型爲ExpandoObject,此類型允許動態添加成員,因此將返回類型定義爲dynamic可以避免編譯期的語法檢查。

二、控制器向視圖傳值

1、ViewDataDictionary集合的元素類型爲object,所以可以把實體對象集合放入ViewData對象或ViewBag對象中傳遞至View視圖頁。

2、Action中的View()方法可以接受object數據,所以也可以把實體對象集合傳遞至View視圖頁,通過視圖的Model屬性取回。

三、視圖傳值到控制器

1、ASP.NET MVC的底層框架是ASP.NET,因此以前學習過的系統對象仍然可以使用。

2、視圖傳值到控制器

1)視圖以GET方式提交的數據,在Action方法中通過Request對象的QueryString集合獲取

2)視圖以POST方式提交的數據,在Action方法中通過Request對象的Form集合獲取

3、當分別以get、post兩次請求同名Action時,post對應的Action必須以[HttpPost]修飾。

四、綜合案例

1、多種傳值方式的應用場景:

1)ViewData:適合傳遞單個數據,需要類型轉換

2)ViewBag:適合傳遞單個數據,不需要類型轉換

3)TempData:主要用於跨多個動作方法傳遞數據

4)View()方法傳參:適合傳遞模型數據,強類型視圖中不需要類型轉換

小劇場:生命中不期而遇的溫暖。Unexpected warmth in life.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章