【发布时间】:2014-02-06 22:12:37
【问题描述】:
我在这里和那里阅读了几个与隐藏领域相关的问题/答案,但没有一个能真正解决我的疑问。我不认为这个问题与视图状态直接相关,或者没有足够早地绑定我的数据,因为我的其他控件保留了它们的值,我在绑定隐藏字段值的同时也绑定了这些值。
我正在使用 asp 中继器生成一个表,并使用服务器端标签绑定表值,如下所示: 请注意,我将 绑定到隐藏字段值并标记文本字段。
<asp:Repeater ID="RpPrograms" runat="server" EnableViewState="True">
<HeaderTemplate>
<table id="tablePrograms" class="display">
<thead>
<tr>
<th>Checkbox</th>
<th>Program</th>
<th>Company Name</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<div id='<%# "ProgramCbxCol_" + Eval("ProgramID").ToString()%>'>
<asp:checkbox runat="server" ID="cbxProgram" />
<asp:HiddenField ID="hdnProgramID" runat="server" Value='<%# Eval("ProgramID")%>' />
<asp:HiddenField ID="hdnProgramTagName" runat="server" Value='<%# Eval("Program") + "(" + Eval("CompanyName") + ")"%>'/>
</div>
</td>
<td><asp:label runat="server" ID="ProgramName" Text='<%# Eval("Program") + "(" + Eval("ProgramID").ToString() + ")"%>'></asp:label></td>
<td><%#Eval("CompanyName")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
第一次加载页面时,我的所有值(包括隐藏字段值)都已正确绑定。但是,在页面回发之后(通过单击保存按钮,我通过从隐藏字段中获取值来保存选中的复选框),所有隐藏字段值都消失了。尽管如此,我使用服务器端标签绑定的其他数据在回发后仍然可用。 (公司名称,程序都可用。)
我通过将 ProgramID 绑定到 asp 标签的文本字段进行了测试。事实证明,与隐藏字段 ProgramID 不同,此 ProgramID 在回发后确实存在。这证明问题与绑定数据太晚无关。可能也与视图状态无关,但我不确定。我认为这与asp hiddenfield特别相关。
有人能解开这个谜吗?为什么回发后隐藏字段值不保留?
【问题讨论】:
-
现在,我正在通过在保存(单击)事件之后再次绑定我的数据来解决这个问题。但是,如果隐藏字段值在回发后仍然存在,则根本没有必要。
标签: c# asp.net data-binding viewstate hidden-field