【问题标题】:asp.net textarea postback before submit button提交按钮前的asp.net textarea回发
【发布时间】:2011-08-17 02:26:39
【问题描述】:

我有一个 ASP.NET 表单,底部有几个控件和一个提交按钮,都在一个更新面板内:

<asp:UpdatePanel runat="server" ID="upContent">
    <ContentTemplate>
        <asp:TextBox runat="server" ID="tbxMyTextBox" AutoPostBack="true" />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return doStuff()" OnClick="btnSubmit_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

如果我在 TextBox 中写入内容并立即单击“提交”(没有先单击 TextBox),则不会记录更改(如服务器端事件处理程序中所示)。但是,如果我在 TextBox 中写入内容,然后将焦点更改为另一个控件,则会通过 UpdatePanel 发生 AutoPostback,然后单击“提交”会识别这些更改。如何在单击提交按钮时强制更新此内容,同时仍运行附加到它的客户端和服务器端事件?谢谢!

【问题讨论】:

  • 为什么要设置 AutoPostBack="true" ?有这个需要吗?
  • 无论 AutoPostBack 设置如何,我在问题中描述的问题都会发生。
  • 你是说自动回发对文本框做了一些在提交表单之前需要做的事情吗?

标签: asp.net updatepanel form-submit autopostback


【解决方案1】:

您的文本框是否可能由于某些提交/点击事件处理程序而被清除?我建议您使用诸如 Fiddler 之类的工具来检查请求中的 POST 数据。或者,您可以在服务器端代码处设置断点并检查请求数据。特别寻找Request.Form[tbxMyTextBox.UniqueID] - 即寻找文本框名称的值(客户端的名称属性对应于服务器端的UniqueID 属性)。如果请求包含在文本框中键入的值,则服务器端正在发生某些事情,但好消息是您始终可以从 Request 对象中检索该值。如果请求对象中不存在该值,则表示客户端代码在提交之前清除了该值。

【讨论】:

    【解决方案2】:

    如果 onclick 方法返回 false,它会取消按钮正常执行的操作。由于您的按钮通常会提交您的表单,但它似乎没有提交,因此doStuff 中的客户端 JavaScript 代码可能返回 false。

    【讨论】:

    • 不是这样的;它返回真。它正在正确运行客户端和服务器端事件。
    猜你喜欢
    • 2012-07-20
    • 2013-07-29
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多