VB.Net中点击按钮(Button)会重复提交两次表单
在VB.NET程序开发过程中遇到一个问题
提交一个表单时,button的html代码如下
<asp:Button ID="btnSubmit" OnClick="cmdSubmit" runat="server" CssClass="btn btn-default" Text="Send" CausesValidation="true" />
后台代码如下:
Sub cmdSubmit(ByVal obj As Object, ByVal e As EventArgs) Handles btnSubmit.Click
If Page.IsValid Then
Dim objMessage As New MailMessage()
Dim JobTitle As String = Job_Title.Text
Dim Region As String = ""
objMessage.To.Add("pengwu1984@gmail.com")
If Request.ServerVariables("SERVER_NAME").ToLower <> "security-support.gallagher.com" Then
objMessage.CC.Add(Email_Address.Text)
End If
objMessage.From = New MailAddress("noreply@security.gallagher.com")
objMessage.ReplyTo = New MailAddress(Email_Address.Text)
objMessage.Subject = "Access Request Support"
objMessage.IsBodyHtml = True
objMessage.Body = "test email"
End If
End Sub
在执行过程中,发现点击Button时,会提交两次。
当我点击按钮(btnSubmit)时,发现cmdSubmit会重复执行两次,这样说可能表达不太准确,应该说是btnSubmit对应的OnClick事件执行了两次。弄了很久都没发现原因
一个不小心的测试让我恍然大悟,原来,VB中的Button事件在Html里边是没有的,去了就OK了,下面给出两种语言下的对照:
C#
<asp:Button ID="BtnNew" runat="Server" Text="新增数据" OnClick="BtnNew_Click"/>
VB
<asp:Button ID="BtnNew" runat="Server" Text="新增数据" OnClick="BtnNew_Click"/>
那可能你会问,在VB中,后台代码如何知道点击按钮时执行对应的事件?下面再来看看这两个事件的定义:
C#
protected void btnSubmit_Click(object sender, EventArgs e)
{
//事件具体的处理代码
}
VB
Protected Sub cmdSubmit(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit_Click
'事件具体的处理代码
end Sub
事件一比较,可以看到,其实在VB中,它是通过Handles这个属性来把事件代码和Button对象捆绑在一起的!但是其实,如果VB的Html代码和事件代码都写成和C#的一样,程序也能正常跑起来。但就是不能把VB的HTML代码写成C#的,事件代码写成VB的,这种情况下程序就会跑偏,重复执行Click事件代码!
VB.Net中点击按钮(Button)会重复提交两次表单的更多相关文章
- javaWeb中一个按钮提交两个表单
一个按钮提交两个表单,有时候会用到,一般会很容易想到使用 onclick="document.form1.submit();document.form2.submit();" 的方 ...
- ASP.NET防止连续多次点击提交按钮 导致页面重复提交
PS:实际使用中发现,第①种方法在火狐浏览中有时候有问题.第2种方法,在各个浏览器中都没问题 近做项目遇到了这样的情况: 公司网络比平常慢了不少,在点击保存按钮提交页面后需等待挺长的一段时间,忍不住手 ...
- 解决IE浏览器中点击按钮上传无效的问题
前几天写了上传功能,点击按钮上传,在谷歌中是没有任何问题的: 但是在IE浏览器中点击没有任何效果 源代码如下: 后来发现在Firefox.IE浏览器中button标签内部可以含有其他标签,但是不能对 ...
- electron-vue中点击按钮,实现打开程序目录里面的某个文件
设计到的知识点: explorer.exe /select 打开文件夹并把焦点放到指定文件 nodejs中的process模块--child_process.exec 我这里是根据需求,点击按钮后打开 ...
- Android中点击按钮获取string.xml中内容并弹窗提示
场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...
- Windows中点击“关闭”button发生了什么?
对于Windows操作,当用户点击"关闭"button时,窗体函数就会收到一个WM_DESTROY消息. 窗体函数应该调用PostQuitMessage(0) 向消息队列插入一个W ...
- winfrom 点击按钮button弹框显示颜色集
1.窗体托一个按钮button: 2.单击事件: private void btnForeColor_Click(object sender, EventArgs e) { using (ColorD ...
- K3/Cloud点按钮打开单据,列表,动态表单,简单账表和直接Sql报表示例
BOS IDE中配置了个界面,拖了动态表单界面,加了5个测试按钮. 点击“打开单据”维护界面, 会跳转到一个新的主界面页签,[物料]新增 点击“打开列表”,会弹出[物料]列表界面 点击“打开动态表单” ...
- Android中点击按钮启动另一个Activity以及Activity之间传值
场景 点击第一个Activity中的按钮,启动第二个Activity,关闭第二个Activity,返回到第一个Activity. 在第一个Activity中给第二个Activity传递值,第二个Act ...
随机推荐
- Mysql一主多从和读写分离配置简记
近期开发的系统中使用MySQL作为数据库,由于数据涉及到Money,所以不得不慎重.同时,用户对最大访问量也提出了要求.为了避免Mysql成为性能瓶颈并具备很好的容错能力,特此实现主从热备和读写分离. ...
- POJ1035——Spell checker(字符串处理)
Spell checker DescriptionYou, as a member of a development team for a new spell checking program, ar ...
- JS中访问对象的属性
方式一: 对象名.属性名; 方式二: 对象名["属性名"]; ★注意:方式二中,属性名以字符串的形式出现在方括号中,这意味着通过方式二访问属性的话,可以实现“动态访问对象的 ...
- python学习笔记三--字典的使用
一.基本使用: 1. 赋值:{key:value} 1.1 与列表相同处:会改变索引(键)相关联的值的改变 1.2 与列表不同处:不用考虑值的长度,而列表是有序的需要考虑末尾偏移量,超过末尾偏移量的会 ...
- Java 简单的加密解密算法
package cn.std.util; import java.nio.charset.Charset; public class DeEnCode { private static final S ...
- flask开发遇到Internal Server Error的解决办法
flask开发过程中遇到了Internal Server Error错误,可以在代码加上debug app.debug=True 这样就能看到错误信息了
- CentOS6.5安装配置Samba
CentOS6.5安装配置Samba 本文的场景是虚拟机运行CentOS6.,本机是Win7,现欲把CentOS上的一个文件夹共享出来,Win的机器可以读写. Samba与window连接需要使用Ne ...
- poj 1062 昂贵的聘礼(最短路 dijk+枚举)
终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...
- poj2月题解
竟然生日前一天poj破百,不错不错,加速前进! poj2437 由于泥泞不重叠,所以按其实左边排个序再统计一遍即可(如果不是刚好盖满就尽量往后盖) poj2435 细节bfs poj2230 求欧拉回 ...
- mvc源码解读(20)-controller和view之查找view
很多时候在mvc项目中我们需要去扩展自己的视图引擎,大概看起来应该下面这个样子的: public class RazorEngineExpand : RazorViewEngine { private ...