我想在asp.net中使用c#动态更改我的按钮文本。我还尝试了动态javascript警报弹出窗口,但它也会在邮件发送后显示。
目前我有;
protected void btnSend_Click(object sender, EventArgs e)
{
btnSend.Text = "Sending.."; // Changing Button text
ScriptManager.RegisterStartupScript(btnSend,GetType(), "Javascript", "javascript:helloWorld(); ", true); // Also popup javascript test output
using (MailMessage mm = new MailMessage("info@oratify.com", "info@oratify.com"))
{
mm.Subject = "Dropped Mails";
string body = Request.Form["email"];
body+="<br>" + "<br>" + Request.Form["message"];
mm.Body = body;
mm.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.office365.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential("info@oratify.com", "Bensezer10.");
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
}
}
并在aspx方面;
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<section class="cid-qKKEwJNZ1Q mbr-fullscreen mbr-parallax-background" id="header15-2p">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<table style="width: 100%; text-align: center; margin-top: 0px; height: 78px;">
<tr>
<td style="text-align: center;">
<asp:Button ID="btnSend" runat="server" Text="SEND" Width="200px" BorderStyle="None" Height="60px" Font-Names="SF Pro Display" Font-Size="14pt" CssClass="ButtonClass" OnClick="btnSend_Click" />
</td>
</tr>
</table>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSend" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</section>
</form>
好吧,它在发送邮件功能完成后更改了buttontext,这是3秒后。
我如何动态制作?
答案 0 :(得分:2)
当服务器仍在处理请求时,您正在更改按钮文本。只有当电子邮件已发送时,客户端才会收到服务器的响应,并且实际上可以显示结果。
您需要做的是使用JQuery / Javascript在通过ajax请求将帖子发回服务器之前更改按钮文本,然后在服务器完成后更新文本发送电子邮件。
有更详细的方法(因为涉及的步骤很少),可以找到here。
答案 1 :(得分:1)
您需要使用javascript来更新按钮文本。以最简单的形式,将此OnClientClick="this.value = 'Sending....';"
添加到您的按钮。
<asp:Button ID="btnSend" OnClientClick="this.value = 'Sending....';" runat="server" Text="SEND" Width="200px" BorderStyle="None" Height="60px" Font-Names="SF Pro Display" Font-Size="14pt" CssClass="ButtonClass" OnClick="btnSend_Click" />
在代码隐藏中:
protected void btnSend_Click(object sender, EventArgs e)
{
using (MailMessage mm = new MailMessage("info@oratify.com", "info@oratify.com"))
{
// do your things...
}
btnSend.Text = "Sent";
}
答案 2 :(得分:1)
在Chrome中,我发现在Visual Studio 2019中由IIS Express呈现页面时this.value = '...';
不起作用。对于我来说,有效的方法是:
<asp:LinkButton ID="myButton" runat="server" OnClick="doSomething()" OnClientClick="this.style.background='#36648B';this.text='Wait...';">Click!</asp:LinkButton>