ViewData和TempData的差異
剛拿到保哥的"ASP.NET MVC2開發實戰"的時候,真的很高興,因為在高雄似乎很少有賣大量電腦書籍的店家
所以連帶著一些新書都可能晚到貨,或根本不進貨,真的是給他有遺憾到...
不過,拿到書的時候,我很本能的就從最後一頁開始翻
"咦?程式碼光碟呢?怎麼沒有?"
整本書翻前、翻後,就是找不到那片Buling Buling的光碟,也沒看到有附光碟的字樣...
嗯,好吧...我想這本書是沒有光碟的...@@a(狂抓頭)
讀完了前三章,剛看到Global.asax內容的時候,腦中立刻浮現"Struts"這幾個字...
是啊,這跟JSP的Struts怎麼長得這麼像?不過話說回來,既然要搞MVC,那定義出來的東西很像,也是很合情合理的事...
"就好像跑步、游泳一樣,還不是你做什麼,他做什麼,抗議無效!" by 薛家燕
目前看到第六章,書中似乎都是用ViewData,它是屬於實作IDictionary介面的ViewDataDictionary類別,
很好奇的試了一下在aspx上面寫錯Key的名稱會不會丟出例外,結果答案是...不會
在Google ViewData的時候,發現除了ViewData之外,其實另外還有一個TempData
一樣實作IDictionary介面,不一樣的是:
ViewData | TempData | |
資料存放 | Controller屬性 | Session當中 |
生命週期 | 一個頁面的請求 | 一個Request的範圍 |
經過RedirectToAction | null | 上個Action存放的資料 |
但TempData在經過RedirectToAction之後會自動清除(Session),可透過Keep方法將其保存
(關於ViewData和TempData的差別,係參考http://www.dotblogs.com.tw/boodoo1121/archive/2010/01/21/13191.aspx
在此感謝boodoo1121前輩的分享^^)
P.S:
書上Page.52和Page.53的範例好像怪怪的,因為程式碼明明是在"顯示留言"使用了<h2>的標籤,而在"留下足跡"使用了<a>的標籤,那跑出來的圖怎麼會像是Page.53所示的圖3-29呢? XD
也利用這篇文章,向敬愛的大鈞兄回報IE7可以po文章囉,感謝您^^
2010.11.01 P.S:
其實保哥在書上有提到TempData,就在第六章的第七節,只是我在寫這篇的時候剛好才看到第六章開頭...Orz