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

淺析ASP.NET MVC中的TempData機(jī)制

開(kāi)發(fā) 后端
本文將介紹ASP.NET MVC中的TempData機(jī)制,這是一個(gè)字典類,作用是在Action執(zhí)行過(guò)程之間傳值。希望大家通過(guò)本文能學(xué)到如何用好TempData。

開(kāi)發(fā)環(huán)境:Windows 2008, VS 2008 SP1, ASP.NET MVC 1.0

一. ASP.NET MVC中的TempData

在ASP.NET MVC框架的ControllerBase中存在一個(gè)叫做TempData的Property,它的類型為TempDataDictionary,顧名思義是一個(gè)字典類。TempData在ASP.NET MVC中的作用是:可用于在Action執(zhí)行過(guò)程之間傳值。簡(jiǎn)單的說(shuō),你可以在執(zhí)行某個(gè)Action的時(shí)候,將數(shù)據(jù)存放在TempData中,那么在下一次Action執(zhí)行過(guò)程中可以使用TempData中的數(shù)據(jù)。

如:

 

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

二. TempData的生命周期

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

 

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

閱讀了相關(guān)源代碼之后,真相大白了。

TempData.Load()

 

TempData.Save()

 

TempDataProvider用于暫存數(shù)據(jù)。在TempData.Load()方法中,TempDataProvider中保存的數(shù)據(jù)會(huì)被讀到TempData中,供Action調(diào)用過(guò)程中使用。Action執(zhí)行完后,TempData.Save()所作的事情則是,移除TempData中任何沒(méi)有被更新的鍵值對(duì),然后再將TempData中的數(shù)據(jù)保存,供下一次調(diào)用使用(注:也就是說(shuō),只有更新過(guò)的,以及新添加的鍵值對(duì)才能再下次request中繼續(xù)使用)。為什么TempData中的數(shù)據(jù)需要迅速被清除呢?很簡(jiǎn)單,節(jié)約內(nèi)存嘛。

三. ITempDataProvider

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

 

這里我們看到了一個(gè)默認(rèn)實(shí)現(xiàn)的SessionStateTempDataProvider類。也就是說(shuō),默認(rèn)情況下,ASP.NET MVC通過(guò)SessionStateTempDataProvider來(lái)保存TempData的數(shù)據(jù)。很明顯,數(shù)據(jù)是存在Session中的,也就是說(shuō),如果你禁用SessionState,那么你的頁(yè)面就報(bào)異常了。

ASP.NET MVC生來(lái)就是被設(shè)計(jì)為易擴(kuò)展的,我們可以很容易通過(guò)實(shí)現(xiàn)自己的ITempDataProvider類來(lái)替換這個(gè)默認(rèn)的SessionStateTempDataProvider。需要注意的是,TempDataProvider存放的數(shù)據(jù)必需具有用戶獨(dú)立性。

ITempDataProvider接口定義非常簡(jiǎn)單:

在MvcFutures中,你也可以找到一個(gè)CookieTempDataProvider,提供了將TempData存儲(chǔ)在Cookie中的實(shí)現(xiàn)。

【編輯推薦】

  1. 技術(shù)高手講評(píng)ASP.NET MVC 1.0
  2. 微軟發(fā)布ASP.NET MVC框架1.0正式版(附下載地址)
  3. ASP.Net MVC框架配置與分析
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

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數(shù)據(jù)緩存

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組件設(shè)計(jì)

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優(yōu)點(diǎn)

2009-07-22 13:16:04

MvcAjaxPaneASP.NET MVC

2010-03-12 09:38:58

2009-12-11 09:36:50

ASP.NET MVC

2009-07-22 18:03:00

ASP.NET ASP

2009-11-02 10:15:53

ASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 俺去俺来也www色官网cms | 国产农村妇女精品一区 | 国产精品久久国产精品99 gif | 亚洲最大的黄色网址 | 一区精品国产欧美在线 | 色婷婷综合网站 | 精品麻豆剧传媒av国产九九九 | 国产乱码久久久 | 成人av高清在线观看 | 成人夜晚看av| 男女羞羞视频在线 | 第一区在线观看免费国语入口 | 理伦毛片 | 色综合久久天天综合网 | 综合国产| 精品视频一区二区 | 亚洲永久免费观看 | 精品久久一区 | 久久99精品久久久久久国产越南 | 亚洲国产aⅴ精品一区二区 免费观看av | 久久久久亚洲精品国产 | 日韩aⅴ在线观看 | 国偷自产av一区二区三区 | 欧美中文字幕一区二区三区亚洲 | 国产欧美一区二区三区久久人妖 | 91在线精品一区二区 | 国产精品国产三级国产aⅴ无密码 | 亚洲一区中文字幕在线观看 | 欧美一级免费观看 | 成人精品久久日伦片大全免费 | 午夜精品一区 | 在线欧美亚洲 | 亚洲综合精品 | 91麻豆精品国产91久久久久久 | 日韩欧美字幕 | 97精品超碰一区二区三区 | 亚洲国产网 | 中文字幕日韩一区 | 亚洲视频二区 | 欧美国产精品一区二区三区 | 嫩草一区二区三区 |