我有一个.aspx页面,如果点击该页面上的按钮,该页面会向客户发送一封信。单击页面调用本身,因此邮件发送类位于同一文件中。但是,我不希望在简单加载页面时发送邮件。我希望它在单击按钮时发送信件,所以,我正在尝试使用以下代码:
void page_Load(Object sender, System.EventArgs e)
{
if (IsPostBack)
{
SendMail();
}
}
但它不起作用。我做错了什么?
答案 0 :(得分:1)
为什么不使用Button
的{{1}}呢?
您所说的是仅当特定按钮为Click Event
时才要发送电子邮件。那么为什么不注册它的点击事件而不是用额外的代码膨胀你的clicked
?
只有当该按钮的点击导致page_load
时,才会引发按钮的点击事件。所以,这是你最好的选择。
答案 1 :(得分:1)
为按钮的单击事件创建一个事件处理程序(只需双击Visual Studio的Designer中的按钮)。
使用Page_Load
会导致用户在任何情况下发回电子邮件,而不仅仅是按下按钮。
答案 2 :(得分:0)
看起来页面找不到Page_Load的正确事件处理程序,检查案例并将其更正为Page_Load
答案 3 :(得分:0)
看看是否有效(用以下代码替换page_Load
方法):
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
if (IsPostBack)
{
SendMail();
}
}
您目前依靠AutoEventWireup
功能来连接您的网页事件。这很慢且有问题,可能是您的问题的原因。我给你的方法会覆盖Page.OnLoad
并且也应该纠正这个问题。
答案 4 :(得分:0)
如果您想使用服务器,每次发布页面时都会引发 Page_Load 事件,并通过回发或回调进行提升你应该在按钮的点击事件中叫你 SendMail 方法的会外活动:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && !IsCallback)
{
/*occurs the first time the page is loaded*/
}
if (IsPostBack)
{
/*occurs every time a postback is raised (e.g. by form submission) */
}
if (IsCallback)
{
/*occurs every time a callback is raised, e.g. by generating callbacks by means of AJAX/
}
}
protected void SendMail_Click(object sender, EventArgs e) { SendMail(); }
阅读MSDN:ASP.NET Page Life Cycle。