【发布时间】:2011-12-16 18:46:21
【问题描述】:
我在更新面板中有两个复选框。一个是 ASP.NET CheckBox 控件,另一个只是 HTML <input> 元素。我在不同的更新面板中有一个按钮。
所以这是页面的相关部分:
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<input type="checkbox" id="check1" name="check1" />HTML Input<br />
<asp:CheckBox runat="server" ID="check2" Text="ASP CheckBox"></asp:CheckBox><br />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="UpdatePanel2">
<ContentTemplate>
<asp:Button runat="server" ID="Submit" Text="Submit" OnClick="Submit_Click" />
</ContentTemplate>
</asp:UpdatePanel>
我选中两个复选框,然后单击按钮。我看到的是复选标记从只是 HTML 的那个中消失了,但是 CheckBox 控件的复选标记仍然存在。
为什么?我原以为第一个更新面板中的什么都没有会改变,因为我正在对第二个更新面板进行部分回发。
如果我将两个复选框移出更新面板,那么它们都会保留它们的复选标记(如我所料)。
【问题讨论】:
-
Mitchel Sellers 的回答解释了这一点。我将补充一点,我不应该对 CheckBox 控件的行为不同于输入元素感到惊讶(即使它们都呈现为输入元素)。页面将在每次页面生命周期中从其默认值开始,但 CheckBox 将在其 LoadPostData 方法中恢复发布的值。
标签: asp.net checkbox updatepanel