【问题标题】:ASP.NET Form Partial SubmitASP.NET 表单部分提交
【发布时间】:2013-02-28 13:05:26
【问题描述】:

我有这个代码:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <asp:TextBox ID="Text1" runat="server"></asp:TextBox>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="Text2" runat="server"></asp:TextBox>
            <asp:Button ID="Submit" runat="server" OnClick="Submit_Click"
                Text="Click Me"/>
        </ContentTemplate>

    </asp:UpdatePanel>

当我点击提交按钮时,所有表单都被发回服务器(Text1 和 Text2)。我只想在 UpdatePanel (Text2) 中回发文本框。有可能吗?

感谢您的回复。

编辑(解决方案): 我想,我有使用 Javascript 的解决方案:

    function onSubmit() {
        var text1 = this.document.getElementById('<%=Text1.ClientID%>');
        text1.disabled = true;
        return true;
    }

    ....

    <asp:Button ID="Submit" OnClientClick="onSubmit();" ..../>

这会导致 Text1 在 PostBack 之前被禁用。似乎 ASP.NET 不会从禁用的文本框中回发值。然而,这仅在没有 UpdatePanel 的情况下有效。当然,回发后Text1为空。

【问题讨论】:

  • 您的意思是在 Text1 文本中进行的更改也适用于部分回发响应?
  • 我不想在单击提交按钮时回发 Text1。我只想提交 Text2。

标签: asp.net ajax updatepanel


【解决方案1】:

嗯,UpdatePanel 控制返回的内容。你无法改变这种行为。它应该只发布 UpdatePanel 的表单数据(我相信),以及整个 ViewState。它必须发布整个 ViewState 才能使页面生命周期正常工作。

【讨论】:

  • 提交按钮发回 Text2(我想要的),还有 Text1(不在 UpdatePanel 中)。如果我在 Text1 上将属性 EnableViewState 设置为 false,它仍会在提交时发回。
  • 这个答案说明所有表单数据一直提交:stackoverflow.com/a/8326714/6305294
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多