我有一个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,然后单击“提交”会识别这些更改。如何在单击提交按钮的同时强制更新此内容,同时仍然运行附加到它的clientside和serverside事件?谢谢!
答案 0 :(得分:1)
由于某些on-submit / on-click事件处理程序,您的文本框是否可能被清除?我建议你使用一些工具,如Fiddler来检查请求中的POST数据。或者,您可以在服务器端代码中设置断点并检查请求数据。寻找特别Request.Form[tbxMyTextBox.UniqueID]
- 即查找文本框名称的值(客户端的名称属性,对应于服务器端的UniqueID
属性)。如果请求包含在文本框中键入的值,则服务器端会发生某些事情,但好消息是您始终可以从Request对象中检索值。如果Request对象中不存在该值,则表示客户端代码在提交之前清除该值。
答案 1 :(得分:0)
如果onclick方法返回false,则取消按钮通常执行的操作。由于您的按钮通常会提交您的表单,但似乎没有提交,因此doStuff
中的客户端javascript代码可能会返回false。