【问题标题】:ASPX Button - nothing happensASPX 按钮 - 没有任何反应
【发布时间】:2012-04-12 09:09:29
【问题描述】:

我在一个应该发送电子邮件的 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 是否是解决方案,因为它不处理任何代码..

有什么想法吗?谢谢。

【问题讨论】:

  • 尝试使用 onclick
  • 您的 aspx.cs 文件的名称是什么?是“signup.aspx.cs”还是“_Default.aspx.cs”?
  • 我想知道不需要为自定义输入操作连接事件处理程序的印象来自哪里?

标签: c# asp.net html email button


【解决方案1】:

将处理程序添加到事件

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

【讨论】:

  • @AdrianIftode 你对 AutoEventWireup 的看法是对的,我不知道我为什么会放屁。我仍然坚持不需要标记中的 OnClick 的事实。
  • 这就是答案......虽然现在我找不到主机名......我需要弄清楚
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    Reference 如果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);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-02
      • 2017-09-05
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多