ASPX按钮-什么都没发生

本文关键字:什么 按钮 ASPX | 更新日期: 2023-09-27 18:29:22

我在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是否是解决方案,因为它不会处理任何代码。。

有什么想法吗?谢谢

ASPX按钮-什么都没发生

将处理程序添加到事件

<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;
          };
    }
}

您需要在按钮上分配事件处理程序:

<asp:Button runat="server" ID="SendEmail" Text="Sign Up" OnClick="SendEmail_Click" />

引用如果Page directiveAutoEventWireup属性设置为true(或者如果缺少,因为默认情况下为true),页面框架会自动调用页面事件,特别是Page_Init and Page_Load方法。在这种情况下,不需要显式处理程序。

AutoEventWireUp = false 的情况下,将不执行以下处理程序

protected void Page_Load(object sender, EventArgs e)
{
}

但当值更改为True时,将执行此操作。


第二个问题是,您希望在不声明其处理程序的情况下执行按钮单击事件。这真的不可能。如果您不想在HTML中注册它,有另一种方法可以在代码后面进行注册,如下所示。

protected void Page_Load(object sender, EventArgs e)
{
      Button b = new Button();
      b.Click += new EventHandler(b_Click);
}