zoukankan      html  css  js  c++  java
  • 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事件代码!

  • 相关阅读:
    Linux 分区注意事项
    wamp2.4-- 为WAMP中的mysql设置密码密码
    转multicast vs broadcast
    转 生成 HTMLTestRunner 测试报告
    Eclipse和PyDev搭建完美Python开发环境(Windows篇)
    转 深入解析浏览器的幕后工作原理
    selenium + python 怎样才能滚到页面的底部?
    Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)
    Java中使用poi导入、导出Excel
    eclipse下的tomcat内存设置大小
  • 原文地址:https://www.cnblogs.com/wphl-27/p/5702481.html
Copyright © 2011-2022 走看看