2010-10-18 47 views

回答

14

這與ViewState無關。通過執行POST來維護表單控件的值。只要控件在頁面生命週期中足夠早地創建,發佈的值就會在控件上設置。如果刷新頁面或單擊執行GET的超鏈接,則該值將丟失或恢復爲設計器生成的默認值。

回到你的問題,如果你有一個設計器生成的HiddenField(在aspx文件中),它應該自動設置回發值。無論是在代碼中的其他位置更改它,還是在設置值之前(即在Page_Load()之前)嘗試訪問該值。如果您有代碼生成的HiddenField,則它需要具有相同的ID並在頁面設置發佈值之前創建,例如OnInit

我建議你通讀並理解以下文章。否則,由於Page生命週期和ViewState是基礎,因此您將繼續打牆。

http://msdn.microsoft.com/en-us/library/ms972976.aspx

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

+0

感謝您的鏈接。我覺得MSDN文章做解釋的一個更好的工作,因爲它實際上你顯示網頁的生命週期,並試圖之前在每一步會發生什麼來描述ViewState,博客文章對我來說似乎非常分散 – Zack 2013-05-01 17:33:13

2

將EnableViewState設置爲True

+0

它不工作:( – 2010-10-18 17:37:37

2

默認情況下,它的構建是爲了實現此目的。除非您已禁用控件,父控件或頁面的視圖狀態,否則應該沒有問題。

11

配售及ASP:UpdatePanel的作品:一個ASP內部hiddenfield。

0

是的,asp:HiddenField裏面的一個asp:UpdatePanel的作品。

+1

雖然這可能是一個有價值的提示來解決這個問題,但是 的答案確實需要比這更詳細的信息,請提供示例代碼來顯示什麼你的意思是, 或者,可以考慮把它寫成註釋。 – 2016-07-11 12:55:27

-2

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:HiddenField ID="hdnFld" Value="xyz" runat="server"/> 
    </ContentTemplate> 
</asp:UpdatePanel> 

如果更改使用jQuery和之後的頁面刷新獲得的隱藏字段的值,隱藏字段的值將成爲新的價值。現在使用JQuery訪問相同的 。

var currentTab = $('#hdnFld').val();