2011-11-03 41 views
2

我正在開發一個Web應用程序,我需要能夠訪問ViewState值並用這些值重新填充控件。我想利用現有的哈希/存儲ViewState值不創建自定義ViewState值。從ViewState解析和檢索屬性?

如何從特定控件的頁面ViewState中檢索值/屬性?

任何洞察力是讚賞。 謝謝!

回答

2

以下Blog似乎有幫助。我真的同意「真正瞭解ViewState」的標題

有一個很好的例子,你可以從webcontrols繼承和訪問他們的道具。

+0

感謝您的文章。消化很多信息。我會閱讀它,但在此期間,如果可能的話,是否有人有簡短的答案? – Encryption

0

ASP.NET已經利用ViewState來保存控件值並在回發之後重新填充它們,所以如果這正是您想要的,那麼您不需要觸摸ViewState。如果你需要存儲在ViewState中無關緊要的信息,你可以在ViewState中像你這樣的一組數據對任何其他鍵/值集合:

//store value in viewstate 
ViewState["someValue"] = "Foo"; 

//retrieve value from viewstate 
string someValue = ViewState["someValue"].ToString(); 

這上面只是一個簡單的例子,但你可以存儲幾乎任何東西在ViewState中。也就是說,不應該使用ViewState來存儲結果集等大型對象。ViewState會被編碼並存儲在頁面中,大型對象可能會快速膨脹ViewState並降低頁面性能以及其他不良副作用。

+0

我沒有設定這些值,如上所述。我不創建自定義視圖狀態值。我想訪問已經自動生成的ViewState屬性,對於每個控件,在頁面的整個生命週期中 – Encryption

0

是這樣的?

private string GetValue 
    { 
     get 
     { 
      string result = string.empty; 

      if (ViewState["someID"] != null) 
      { 
       result = (string)ViewState["someID"]; 
      } 

      return result; 
     } 
     set 
     { 
      ViewState["someID"] = value; 
     } 
    } 
+0

我沒有設置這些值,如上所述。我不創建自定義視圖狀態值。我想在整個頁面的整個生命週期內訪問已經自動生成的ViewState屬性。 – Encryption

+0

所以你需要一些像enurate所有viewstate值的東西? – sasjaq