在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)会重复提交两次表单的更多相关文章

  1. javaWeb中一个按钮提交两个表单

    一个按钮提交两个表单,有时候会用到,一般会很容易想到使用 onclick="document.form1.submit();document.form2.submit();" 的方 ...

  2. ASP.NET防止连续多次点击提交按钮 导致页面重复提交

    PS:实际使用中发现,第①种方法在火狐浏览中有时候有问题.第2种方法,在各个浏览器中都没问题 近做项目遇到了这样的情况: 公司网络比平常慢了不少,在点击保存按钮提交页面后需等待挺长的一段时间,忍不住手 ...

  3. 解决IE浏览器中点击按钮上传无效的问题

    前几天写了上传功能,点击按钮上传,在谷歌中是没有任何问题的: 但是在IE浏览器中点击没有任何效果 源代码如下:  后来发现在Firefox.IE浏览器中button标签内部可以含有其他标签,但是不能对 ...

  4. electron-vue中点击按钮,实现打开程序目录里面的某个文件

    设计到的知识点: explorer.exe /select 打开文件夹并把焦点放到指定文件 nodejs中的process模块--child_process.exec 我这里是根据需求,点击按钮后打开 ...

  5. Android中点击按钮获取string.xml中内容并弹窗提示

    场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...

  6. Windows中点击“关闭”button发生了什么?

    对于Windows操作,当用户点击"关闭"button时,窗体函数就会收到一个WM_DESTROY消息. 窗体函数应该调用PostQuitMessage(0) 向消息队列插入一个W ...

  7. winfrom 点击按钮button弹框显示颜色集

    1.窗体托一个按钮button: 2.单击事件: private void btnForeColor_Click(object sender, EventArgs e) { using (ColorD ...

  8. K3/Cloud点按钮打开单据,列表,动态表单,简单账表和直接Sql报表示例

    BOS IDE中配置了个界面,拖了动态表单界面,加了5个测试按钮. 点击“打开单据”维护界面, 会跳转到一个新的主界面页签,[物料]新增 点击“打开列表”,会弹出[物料]列表界面 点击“打开动态表单” ...

  9. Android中点击按钮启动另一个Activity以及Activity之间传值

    场景 点击第一个Activity中的按钮,启动第二个Activity,关闭第二个Activity,返回到第一个Activity. 在第一个Activity中给第二个Activity传递值,第二个Act ...

随机推荐

  1. __init和__exit宏的作用

    原文地址:http://blog.csdn.net/zhenwenxian/article/details/8564574 内核的部分函数带有__init和__exit宏,负责“初始化”和“清理收尾” ...

  2. ZOJ1204——Additive equations(DFS)

    Additive equations Description We all understand that an integer set is a collection of distinct int ...

  3. Android 监听EditView中的文本改变事件

    android中的编辑框EditText也比较常用,那比如在搜索框中,没输入一个字,下面的搜索列表就显示有包含输入关键字的选项,这个输入监听怎么实现的呢? 我们可以建一个例子,效果图如下: 我们可以监 ...

  4. 第一章 CLR的执行模型

    编译器将源代码编译为托管模块.托管木块包含: PE32或PE32+头 CLR头 元数据 IL(中间语言)代码 PE32头的文件可在32或64位的电脑上运行,PE32+的只能在64上运行.Window6 ...

  5. pmf,cpmf,pdf,cdf,iid的解释

  6. 4418SPI2对应管脚位置

    MCU_SPICLK2 MCU_SPITXD2 MCU_SPIFRM2 MCU_SPIRXD2

  7. I2C I2S SPDIF

    I2C总线 大多数是用于电视机等家用电器的(显卡与显示器之间的通讯也是)I2S: I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输 ...

  8. JavaScript DOM高级程序设计 3.6 实例 将HTML代码转换成DOM代码(附源码)--我要坚持到底!

    作为一名Web开发者,最讨厌的事情就是重复性任务,摆脱乏味的日常重复性事物的一种方法,是借助可重用的对象或者说与你现在建立的ADS库类似的库,另外一种让事情变得有意思,且能够加速开发进程的方式是编写能 ...

  9. JavaScript DOM高级程序设计1.2-循序最佳实践--我要坚持到底!

    我这人,最大的毛病就是浮躁. 下面开始我再一次的学习之旅,希望我能坚持到最后.记笔记除了分享以外,更重要的是让自己看见自己学习之路. 先把ADS库贴出来http://vdisk.weibo.com/s ...

  10. Task的使用

    在.net4.0的时候推出的Task using System; using System.Threading; using System.Threading.Tasks; namespace Tas ...