取消按钮自动回发 - 客户端单击实现的细节
Canceling Button AutoPostBack - Specifics of OnClientClick implementation
使用标准 asp:Button 组件时,必须使用以下技术取消自动回发(或有条件地进行回发):
-
通过 Button.OnClientClick 属性指定客户端操作;
-
实现一个逻辑,该逻辑返回一个布尔值,该值指示是否应执行回发。
以下内容不会取消回发(尽管"OnClientClickHandler"方法返回"false"):
<asp:Button ID="btn" runat="server" OnClientClick="OnClientClickHandler();" />
function OnClientClickHandler() {
return false;
}
以下实现执行:
<asp:Button ID="btn" runat="server" OnClientClick="return OnClientClickHandler();" />
看起来这种行为是由 JavaScript 代码范围的细节引起的。无论如何,我对这个场景的低级实现细节感兴趣。
为什么第一个实现(在"OnClientClickHandler"方法调用之前没有"返回"运算符)不起作用?
需要添加return
的原因是,从事件处理程序返回 false 是取消默认行为的方法(在这种情况下,提交表单)。
另一种方法是执行event.prefentDefault()
OnClientClick="OnClientClickHandler();"
相当于
function onclick(){
OnClientClickHandler();
}
而OnClientClick="return OnClientClickHandler();"
相当于
function onclick(){
return OnClientClickHandler();
}
你看出区别了吗?在第一种情况下,您只是执行函数,但不返回任何内容。
来自 MSDN
使用 OnClientClick 属性指定其他客户端 引发按钮控件的 Click 事件时执行的脚本。 为此属性指定的脚本呈现在 按钮控件的 OnClick 属性以及控件的 预定义的客户端脚本。
并且还提到了这样的提交行为
使用 UseSubmitBehavior 属性指定按钮控件是否 使用客户端浏览器的提交机制或 ASP.NET 回发 机制。默认情况下,此属性的值为 true,导致 用于使用浏览器提交机制的按钮控件。如果指定 False,ASP.NET 页面框架将客户端脚本添加到页面 将表单发布到服务器。
<asp:Button ID="btn" runat="server" OnClientClick="return OnClientClickHandler();" UseSubmitBehavior="false" />
像这样尝试
function CancelPostBack()
{
return false;
}
C# 代码。在 PageLoad 事件中。
btn.Attributes.Add("onclick","return CancelPostBack();");
- 仅当条件为真时,才将客户端单击确认添加到 asp.net 按钮
- Asp.net 客户端单击显示表中其他单元格的值
- 客户端单击会导致网页刷新
- 取消按钮自动回发 - 客户端单击实现的细节
- 如何在 IIS 日志中捕获客户端外部 URL 单击
- 如何在单击处理程序中使用反应路由器 1.0.x 进行客户端路由
- 如何在网格视图中链接按钮的客户端单击事件上显示动态消息
- 想要在客户端单击时使用javascript更改ImageButton的图像源
- 在链接单击时执行客户端脚本
- 添加客户端单击 ASP.NET 按钮
- YUI 2.8.2 数据表在客户端按钮单击操作完成后对旧值进行排序
- 防止在单击按钮和多客户端功能时回发
- asp.net 按钮单击客户端和服务器端代码
- 绑定mousedown的jQuery插件可以防止点击客户端代码
- Html表单:基于客户端上的其他控件来定义控件值的最简单方法
- 多页网页表单的客户端存储
- 表单验证客户端和服务器端
- 如何在单选按钮上更新XML文件单击(客户端)c# Web应用程序
- 显示AngularJs表单的客户端和服务器端错误信息
- HTML表单的客户端验证