Asp.net

什麼是視圖狀態?它是如何編碼的?是加密的嗎?誰使用 ViewState?

  • April 30, 2015

什麼是視圖狀態?它是如何編碼的?是加密的嗎?誰使用 ViewState?

如果您真的想了解ViewState(不僅僅是它的用途),那麼您可能想閱讀這篇精彩的文章(不幸的是,我不是 :-) 的作者。請注意,雖然它有點過時,但仍然是一本非常好的讀物。

視圖狀態是一種雜湊映射(或者至少您可以這樣認為),ASP.NET 使用它來儲存有關頁面的所有臨時資訊 - 比如每個選擇框中目前選擇了哪些選項,那裡有什麼值在每個文本框中,打開哪個面板等。您還可以使用它來儲存任意資訊。

整個地圖經過序列化和加密編碼,並保存在一個隱藏變數中,每當您在頁面上執行任何需要伺服器往返的操作時,該變數就會回傳到伺服器。這是您可以從伺服器程式碼訪問控制項上的值的方式。如果您更改伺服器程式碼中的任何值,則該更改會在視圖狀態中進行並發送回瀏覽器。

不過,請注意您在視圖狀態中儲存了多少資訊……它會很快變得臃腫且每次傳輸到伺服器並返回時都很慢。

~~至於加密,我不知道它有多強大,但它肯定不容易被人類閱讀。不過,我不會將它用於敏感資訊。~~正如評論中所指出的,它根本沒有加密。只是基本編碼,很容易可逆。

引用自:https://stackoverflow.com/questions/2305297