成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析ASP.NET MVC中的TempData機制

開發 后端
本文將介紹ASP.NET MVC中的TempData機制,這是一個字典類,作用是在Action執行過程之間傳值。希望大家通過本文能學到如何用好TempData。

開發環境:Windows 2008, VS 2008 SP1, ASP.NET MVC 1.0

一. ASP.NET MVC中的TempData

在ASP.NET MVC框架的ControllerBase中存在一個叫做TempData的Property,它的類型為TempDataDictionary,顧名思義是一個字典類。TempData在ASP.NET MVC中的作用是:可用于在Action執行過程之間傳值。簡單的說,你可以在執行某個Action的時候,將數據存放在TempData中,那么在下一次Action執行過程中可以使用TempData中的數據。

如:

 

上面的代碼中,Index()給TempData添加了一個鍵值對,假設我們先請求Index這個Action,接著請求Index2這個Action,那么在Index2中,我們便可以得到之前添加到TempData的鍵值對。有趣的是,這時如果再次請求Index2,那么從TempData中讀到的MyName的值會是null。于是,我們需要了解TempData的生命周期。

二. TempData的生命周期

我們知道Http是無狀態的,為什么TempData可以在兩次請求之前傳遞數據呢?很明顯,這個數據必定是已某種形式保存了。查看Controller類的源代碼,很容易的找到了我們想要的東西:

 

從上面的代碼可以看出,每次在執行Action之前,都要調用一下TempData.Load()方法,執行完Action之后,再調用一下TempData.Save()方法。另外這里還有一個重要成員TempDataProvider。

閱讀了相關源代碼之后,真相大白了。

TempData.Load()

 

TempData.Save()

 

TempDataProvider用于暫存數據。在TempData.Load()方法中,TempDataProvider中保存的數據會被讀到TempData中,供Action調用過程中使用。Action執行完后,TempData.Save()所作的事情則是,移除TempData中任何沒有被更新的鍵值對,然后再將TempData中的數據保存,供下一次調用使用(注:也就是說,只有更新過的,以及新添加的鍵值對才能再下次request中繼續使用)。為什么TempData中的數據需要迅速被清除呢?很簡單,節約內存嘛。

三. ITempDataProvider

前面提到的TempDataProvider是Controller的一個Property,它的定義是這樣的:

 

這里我們看到了一個默認實現的SessionStateTempDataProvider類。也就是說,默認情況下,ASP.NET MVC通過SessionStateTempDataProvider來保存TempData的數據。很明顯,數據是存在Session中的,也就是說,如果你禁用SessionState,那么你的頁面就報異常了。

ASP.NET MVC生來就是被設計為易擴展的,我們可以很容易通過實現自己的ITempDataProvider類來替換這個默認的SessionStateTempDataProvider。需要注意的是,TempDataProvider存放的數據必需具有用戶獨立性。

ITempDataProvider接口定義非常簡單:

在MvcFutures中,你也可以找到一個CookieTempDataProvider,提供了將TempData存儲在Cookie中的實現。

【編輯推薦】

  1. 技術高手講評ASP.NET MVC 1.0
  2. 微軟發布ASP.NET MVC框架1.0正式版(附下載地址)
  3. ASP.Net MVC框架配置與分析
責任編輯:彭凡 來源: cnblogs
相關推薦

2009-12-21 10:05:10

ASP.NET MVC

2009-07-31 12:43:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-08-03 18:35:51

ASP.NET數據緩存

2009-09-24 09:26:22

ASP.NET MVC

2009-07-20 10:33:02

ASP.NET MVC

2010-03-26 09:16:44

2009-12-07 09:23:05

ASP.NET MVC

2009-07-22 14:23:39

URL RewriteASP.NET

2009-07-27 15:34:11

MembershipASP.NET

2009-08-10 14:38:29

ASP.NET組件設計

2009-07-27 10:18:12

TypeResolveASP.NET

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 15:50:13

ASP.NET優點

2009-12-11 09:36:50

ASP.NET MVC

2009-07-22 13:16:04

MvcAjaxPaneASP.NET MVC

2010-03-12 09:38:58

2009-11-02 10:15:53

ASP.NET MVC

2009-07-30 13:45:40

ASP.NET開發模式MVC模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久久久久久久久久久下田 | 国产激情91久久精品导航 | 国产日韩久久 | 国产精品7777777 | 国产91久久精品一区二区 | 婷婷综合五月天 | 国产高清视频在线播放 | 日韩欧美大片在线观看 | 亚洲视频一区二区三区 | 亚洲国产精品一区二区久久 | 亚洲精品888 | 欧美一级片久久 | 国产目拍亚洲精品99久久精品 | av先锋资源 | 亚洲精品久久久久久久久久久 | 日韩伦理电影免费在线观看 | 97精品超碰一区二区三区 | 国产精品久久国产精品 | 久久一区二区三区四区 | 美女中文字幕视频 | 99国内精品久久久久久久 | 欧美一区中文字幕 | 亚洲色图网址 | 欧美国产中文字幕 | 偷拍自拍第一页 | 国产yw851.c免费观看网站 | 成人午夜精品 | 欧美日韩精品一区 | 涩涩视频网站在线观看 | 国产精品久久久久久久久久妇女 | 91在线视频在线观看 | 伊人导航| 精品久久香蕉国产线看观看亚洲 | 一级做a毛片 | 午夜在线免费观看 | 日本免费小视频 | 国产亚洲精品久久久久久豆腐 | 亚洲国产精品一区二区第一页 | 亚洲欧洲一区二区 | 久久亚 | 亚洲精品一区二区另类图片 |