我的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 { }
}
什么都没发生,我已经提出了断点但没有发生任何事情。需要帮助吗?
答案 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://dotnetprof.blogspot.com/2012/08/dopostback-function-in-javascript.html