为什么HiddenField值会在回发时保留,而其他控件会丢失其内容?

我有GridView ,它有一个FooterRow,我使用标签来显示每列的总计。

我在JQuery中访问GridView ,并使用JQuery成功计算总计并显示在FooterRow的每列的FooterRow中。

    <asp:Label ID="lblAge" Text='' runat="server">      

但是,当我单击“提交”按钮并尝试在按钮单击事件内部的代码中访问这些值时,所有“总计”值都不会显示,并保持为默认零值。

 string totalAge = ((Label)GrdV.FooterRow.FindControl("lbltotalAge")).Text; // always 0 

为了解决这个问题,我在GridView之外使用了HiddenField控件前面的POST所示。
在Jquery函数中计算Total值之后,我将这些值复制到相应的HiddenFields并成功获取codebehind中的值。

我的问题是为什么会这样? 关于隐藏区域有什么特别之处?

不是因为是隐藏字段,而是因为有作为html输入控件呈现回发它们的值 ,所以你可以在回发后再次使用它。

没有呈现为输入控件的其他控件,它们无法回发它们的值,并且asp.net将先前的值保存在页面的viewstate上,这也是一个隐藏的输入控件,用于保存该数据并将其发回。 所以回帖后,在asp.net后面的代码解码视图状态,并将值赋予该控件。

例如, TextBox呈现为输入控件,而Literal则不呈现。