91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC中TempData機制的原理是什么

發布時間:2021-07-15 14:46:35 來源:億速云 閱讀:139 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關ASP.NET MVC中TempData機制的原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一. ASP.NET MVC中的TempData

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

如:

ASP.NET MVC中TempData機制的原理是什么

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

二. TempData的生命周期

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

ASP.NET MVC中TempData機制的原理是什么

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

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

TempData.Load()

ASP.NET MVC中TempData機制的原理是什么

TempData.Save()

ASP.NET MVC中TempData機制的原理是什么

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

三. ITempDataProvider

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

ASP.NET MVC中TempData機制的原理是什么ASP.NET MVC中TempData機制的原理是什么

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

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

ITempDataProvider接口定義非常簡單:

ASP.NET MVC中TempData機制的原理是什么

看完上述內容,你們對ASP.NET MVC中TempData機制的原理是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

公安县| 青州市| 丰县| 中江县| 独山县| 玉龙| 衡山县| 哈尔滨市| 湟源县| 崇仁县| 旬邑县| 公主岭市| 延安市| 大宁县| 郧西县| 岑巩县| 图片| 静安区| 扬州市| 合江县| 耒阳市| 获嘉县| 鹿邑县| 龙门县| 琼结县| 乌鲁木齐市| 揭阳市| 乐昌市| 上虞市| 丰镇市| 宾川县| 临沂市| 吴桥县| 河池市| 于都县| 台南县| 郴州市| 巴青县| 陈巴尔虎旗| 博客| 延津县|