为什么在刷新页面的时候也会触发Button_Click事件呢?

时间:2022-07-05 18:17:27
源程序如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Util;
using System.Web.Mail;

namespace SendEMail
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtAttach;
protected System.Web.UI.WebControls.TextBox txtContent;
protected System.Web.UI.WebControls.Button btnsend;
protected System.Web.UI.WebControls.Button btnClose;
protected System.Web.UI.WebControls.TextBox txtSender;
protected System.Web.UI.WebControls.TextBox txtReceiver;
protected System.Web.UI.WebControls.TextBox txtTitle;
protected System.Web.UI.WebControls.TextBox txtCC;

private void Page_Load(object sender, System.EventArgs e)
{
}

override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{    
this.btnsend.Click += new System.EventHandler(this.btnsend_Click);
this.Load += new System.EventHandler(this.Page_Load);

}

private void btnsend_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();

mail.From = txtSender.Text;
mail.To = txtReceiver.Text;
mail.Cc = txtCC.Text;
mail.Subject = txtTitle.Text;
//mail.Attachments.Add(new MailAttachment(txtAttach.Text));
mail.Attachments.Add(new MailAttachment("D:\\input.txt"));
mail.BodyFormat = MailFormat.Text;
mail.Body = txtContent.Text;
//mail.BodyEncoding = MailEncoding.Base64;
mail.Priority = MailPriority.High;
SmtpMail.SmtpServer = "172.18.100.200";
SmtpMail.Send(mail);
}
}
}

我想问的问题是:
   为什么刷新页面的时候会进入到btnsend_Click这个时间里面去?

10 个解决方案

#1


再btnsend_Click最后加多一句
Page.RegisterStartupScript(Guid.NewGuid().ToString().Trim(), "<script language='javascript'>window.location.href = window.location.href;</script>");

#2


什么意思?

#3


问题是觉得了,这句的作用是什么啊?把界面上的元素内容清空吗?但我想把内容保留下来啊,还有其他方法吗?我最想知道的是问题到底是出在什么地方。

#4


由于ViewState的原因

#5


在什么情况下刷新页面的?是在点击了Button1之后吗?这样的话就等于重新提交了一次,Button1的Click事件当然会执行。

#6


"在什么情况下刷新页面的?是在点击了Button1之后吗?这样的话就等于重新提交了一次"


为什么是等于重新提交了一次呢?

#7


Response.Redirect(本页面)可以解决你这个问题,
但是用了Response.Redirect(本页面)的话,
你如果在这个事件里有调用JavaScript的地方的话会有问题的
JavaScript函数调不了了

#8


非常想知道,还有没有别的什么办法可以解决这个问题,
或者哪位达人能不能介绍一下出这个问题的原理,谢谢了

#9


我也越到这个问题了,,期待

#10


按钮事件 最后结束的时候返回本页面就不会出现这样的事情了

#1


再btnsend_Click最后加多一句
Page.RegisterStartupScript(Guid.NewGuid().ToString().Trim(), "<script language='javascript'>window.location.href = window.location.href;</script>");

#2


什么意思?

#3


问题是觉得了,这句的作用是什么啊?把界面上的元素内容清空吗?但我想把内容保留下来啊,还有其他方法吗?我最想知道的是问题到底是出在什么地方。

#4


由于ViewState的原因

#5


在什么情况下刷新页面的?是在点击了Button1之后吗?这样的话就等于重新提交了一次,Button1的Click事件当然会执行。

#6


"在什么情况下刷新页面的?是在点击了Button1之后吗?这样的话就等于重新提交了一次"


为什么是等于重新提交了一次呢?

#7


Response.Redirect(本页面)可以解决你这个问题,
但是用了Response.Redirect(本页面)的话,
你如果在这个事件里有调用JavaScript的地方的话会有问题的
JavaScript函数调不了了

#8


非常想知道,还有没有别的什么办法可以解决这个问题,
或者哪位达人能不能介绍一下出这个问题的原理,谢谢了

#9


我也越到这个问题了,,期待

#10


按钮事件 最后结束的时候返回本页面就不会出现这样的事情了