OnClick事件未在任何浏览器上触发

时间:2014-11-02 14:03:47

标签: asp.net

我的index.aspx页面上有一个简单的表单,它在文件后面的代码中点击按钮发送电子邮件

<form runat="server" action="index.aspx">

    <label>Name</label>
    <input type="text" runat="server" class="form-control" placeholder="Name" id="name" required data- validation-required-message="Please enter your name.">
    <label>Email Address</label>
    <input type="email" runat="server" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address.">
    <label>Phone Number</label>
    <input type="tel" runat="server" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number.">
    <label>Message</label>
    <textarea rows="5" runat="server" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea>

    <asp:Button runat="server" Text="Send" OnClick="Button1_Click" CssClass="btn btn-success btn-lg"></asp:Button>

</form>

Button1_Click事件没有在任何浏览器上触发。在我的代码隐藏文件后面我有以下代码

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        // Gmail Address from where you send the mail
        var fromAddress = Request.Form["email"];
        // any address where the email will be sending
        var toAddress = "ab@yahoo.com";
        //Password of your gmail address
        const string fromPassword = "abc";
        // Passing the values and make a email formate to display
        string subject = "Feedback of COMIC MAKER";
        string body = "From: " + Request.Form["name"] + "\n";
        body += "Subject: " + Request.Form["message"] + "\n";
        body += "Question: \n" + Request.Form["phone"] + "\n";
        // smtp settings
        var smtp = new System.Net.Mail.SmtpClient();
        {
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
            smtp.Timeout = 20000;
        }
        // Passing values to smtp object
        smtp.Send(fromAddress, toAddress, subject, body);
    }
    catch { }
}

什么都没发生,我已经提出了断点但没有发生任何事情。需要帮助吗?

1 个答案:

答案 0 :(得分:1)

解决方案是添加UseSubmitBehavior =&#34; False&#34; 所以你最终得到了这个按钮:

 <asp:Button runat="server" Text="Send" OnClick="Button1_Click" UseSubmitBehavior="False" CssClass="btn btn-success btn-lg"></asp:Button>

原因是默认的UseSubmitBehavor设置为True,这意味着Button控件使用客户端浏览器的提交机制。但是你想要的是使用asp回发机制(asp生成一个脚本块,部分是_doPostBack函数:

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

设置UseSubmitBehavior =&#34; False&#34;将触发此函数调用并回发到您的服务器。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.usesubmitbehavior(v=vs.110).aspx

在这里:

http://dotnetprof.blogspot.com/2012/08/dopostback-function-in-javascript.html