我在aspx页面上有一个按钮,应该发送一封电子邮件...我的代码似乎设置正确,但是当点击按钮时,没有任何反应。这是代码。它旨在显示警报,然后重定向到成功页面但没有任何反应......
没有onclick,但根据这一点,不应该是:http://www.velocityreviews.com/forums/t367616-using-handles-vb-vs-c.html此外我从这个代码获得此代码的指南也没有使用onclick,虽然它已经过时了
标记是:
<%@ Page Title="Sign Up" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="signup.aspx.cs" Inherits="WebApplication2._Default" %>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
Email Service
</h2>
Re-enter your email address to confirm signup for updates.
<br />
<table border="0">
<tr>
<td><b>Email:</b></td>
<td><asp:TextBox runat="server" ID="UsersEmail" Columns="30"></asp:TextBox></td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button runat="server" ID="SendEmail" Text="Sign Up"/>
</td>
</tr>
</table>
代码隐藏是:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void SendEmail_Click(object sender, EventArgs e) //Handles SendEmail.Click
{
try
{
//!!! UPDATE THIS VALUE TO YOUR EMAIL ADDRESS
string ToAddress = "info@removed.org";
//(1) Create the MailMessage instance
MailMessage mm = new MailMessage(UsersEmail.Text, ToAddress);
//(2) Assign the MailMessage's properties
mm.Subject = UsersEmail.Text + " would like to sign up for updates";
mm.Body = "Hello, I would like to sign up for updates. My email is " + UsersEmail.Text + ". Thank you.";
mm.IsBodyHtml = false;
//(3) Create the SmtpClient object
SmtpClient smtp = new SmtpClient("[removed]");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//(4) Send the MailMessage (will use the Web.config settings)
smtp.Send(mm);
}
catch (Exception ex)
{
string strError = "<Script language=javascript>alert('Error');</Script>";
Response.Write(strError);
Response.Redirect("Success.aspx");
}
string strMsg = "<Script language=javascript>alert('Emailsent');</Script>";
Response.Write(strMsg);
Response.Redirect("Success.aspx");
//System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE=""JavaScript"">alert(""Hello this is an Alert"")</SCRIPT>");
}
}
}
我真的怀疑onclick无论如何都是解决方案,因为它不处理任何代码..
有什么想法吗?感谢。
答案 0 :(得分:5)
将处理程序添加到事件
<asp:Button runat="server" ID="SendEmail" Text="Sign Up" OnClick="SendEmail_Click"/>
下一步:
如果你这样做:
catch (Exception ex)
{
string strError = "<Script language=javascript>alert('Error');</Script>";
Response.Write(strError);
Response.Redirect("Success.aspx");
}
你不会对错误有任何了解,第一个原因是因为重定向是这样的,因此javascript代码将无法运行,下一个原因就是捕获这样的异常,对它无所作为,你将松开如何解决它的说明。
如果你觉得它会膨胀,你不需要在标记中设置处理程序。你可以在代码
中做到这一点public class _Default : System.Web.Page
{
public _Default()
{
this.Init += (_o, _e) =>
{
SendEmail.Click += SendEmail_Click;
};
}
}
答案 1 :(得分:0)
您需要在按钮上分配事件处理程序:
<asp:Button runat="server" ID="SendEmail" Text="Sign Up" OnClick="SendEmail_Click" />
答案 2 :(得分:0)
Reference 如果AutoEventWireup
的{{1}}属性设置为true(或者如果缺少,则默认情况下为true),页面框架自动调用页面事件,特别是Page directive
方法。在这种情况下,不需要显式的Handler。
Page_Init and Page_Load
AutoEventWireUp = false
但是当值变为True时将执行此操作。
第二个问题是你想要执行按钮点击事件而不声明它的处理程序。这真的不可能。如果你不想在HTML中注册它,那么在后面的代码中还有另一种方法。
protected void Page_Load(object sender, EventArgs e)
{
}