2010-10-18 48 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();