【发布时间】:2019-12-05 14:18:48
【问题描述】:
如何在回发中保存 asp:HiddenField 值?
【问题讨论】:
标签: asp.net
如何在回发中保存 asp:HiddenField 值?
【问题讨论】:
标签: asp.net
这与 ViewState 无关。表单控件的值是通过执行 POST 来维护的。只要在页面生命周期中足够早地创建控件,就会在控件上设置发布的值。如果您刷新页面或单击执行 GET 的超链接,则该值将丢失或恢复为设计器生成的默认值。
回到你的问题,如果你有一个设计器生成的HiddenField(在 aspx 文件中),它应该在回发时自动设置值。要么你在代码中的其他地方改变它,要么你试图在它被设置之前访问它(即在Page_Load()之前)。如果你有一个代码生成的HiddenField,它需要有相同的ID并且在Page设置发布值之前创建,比如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
【讨论】:
在 asp:UpdatePanel 中放置和 asp:hiddenfield 有效。
【讨论】:
如果您是动态添加它,如果它在页面生命周期中添加得太晚,就会发生这种情况。将它添加到 PreInit 中,你应该没问题。查看http://msdn.microsoft.com/en-us/library/ms178472.aspx 了解更多信息。
【讨论】:
是的,asp:HiddenField 在 asp:UpdatePanel 中有效。
【讨论】:
将 EnableViewState 设置为 True
【讨论】:
默认情况下,它就是为此而构建的。除非您为控件、父控件或页面禁用了视图状态,否则应该不会有问题。
【讨论】:
由于更新面板而发生,请检查您的更新面板。对整个页面使用单个更新面板。
【讨论】:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:HiddenField ID="hdnFld" Value="xyz" runat="server"/>
</ContentTemplate>
</asp:UpdatePanel>
如果您使用 JQuery 更改隐藏字段值,然后页面刷新,隐藏字段值将是新值。 现在使用 JQuery 访问相同的内容。
var currentTab = $('#hdnFld').val();
【讨论】: