【问题标题】:Submitting one UpdatePanel clears the checkbox input in a different UpdatePanel?提交一个 UpdatePanel 会清除另一个 UpdatePanel 中的复选框输入吗?
【发布时间】: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


【解决方案1】:

我的猜测是您的更新面板需要进行配置,以便仅更新实际使用的更新面板。当 UpdatePanel2 更新时,两个面板都在更新。相信只要在UpdatePanel1上设置UpdateMode="Conditional"属性,就会得到想要的效果。

您可以在 UpdateMode 属性上查看此 MSDN 文档。

【讨论】:

  • 这就解释了,谢谢。我想我在想你从 UpdateMode="Conditional" 得到的行为是默认的,但它不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多