0

我有一个 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,然后单击“提交”会识别这些更改。如何在单击提交按钮时强制更新此内容,同时仍运行附加到它的客户端和服务器端事件?谢谢!

4

2 回答 2

1

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

于 2011-08-17T05:00:09.270 回答
0

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

于 2011-08-17T02:32:28.533 回答