下面是我在C#中的代码的一部分,它假设发送电子邮件,显示msg框,然后直接到'Multihotelbook.aspx'页面,但直接到页面而不显示msgbox。我不知道为什么。需要帮助
emailClient.Send(消息);
// Response.Write("<script>window.alert('Email sent')</script>");
//ClientScript.RegisterStartupScript(typeof(Page), "myscript", "<script>alert('Email sent');</script>");
// System.Windows.Forms.MessageBox.Show("Email sent");
// MessageBox.Show("Email sent");
// MessageBoxResult result = MessageBox.Show("Email sent", "Confirmation");
//ClientScript.RegisterStartupScript(typeof(Page), "myscript", "<script>alert('Email sent');</script>");
//ScriptManager.RegisterStartupScript(this, typeof(string), "Message", "confirm('Email sent');", true);
//ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "KEY", "alert('Email sent')", true);
Page.ClientScript.RegisterStartupScript(typeof(string), "alert", "<script>alert('Email sent')</script>");
Response.Redirect("Multihotelbook.aspx");
答案 0 :(得分:0)
这......看起来像ASP.NET代码。 ASP.NET中没有MessageBox
。请注意,您必须完全引用System.Windows.Forms
,我想您也必须添加它作为参考。 Windows窗体和ASP.NET是两个非常不同的东西。
你到底想要完成什么?显示JavaScript alert()
?如果是这种情况,那么您可以在响应中包含一些额外的JavaScript代码。
除了......你也是这样做的:
Response.Redirect("Multihotelbook.aspx");
这意味着对客户端的响应被标题所破坏,该标题告诉客户端转到Multihotelbook.aspx
。因此,客户端永远不会在响应中看到您包含的任何其他内容,基本上是RegisterStartupScript
中的任何内容。
执行此代码后,客户端将以Multihotelbook.aspx
结束。除非该页面上有JavaScript alert()
,否则浏览器不会显示一个。
您可以尝试的一种方法是将标记传递给Multihotelbook.aspx
,例如Multihotelbook.aspx?emailSent=true
,并在该页面的Page_Load
中检查该值,如果设置为true,在页面中包含JavaScript代码以显示alert()
(可能正在尝试使用RegisterStartupScript
)。