我曾遇到这样的问题,代码如下:
Response.Write ("<script language=javascript>alert('订阅成功,请确认手记号码!');</script>");
Response.Redirect("personalInfo.aspx");
结果发现Response.Write ("<script language=javascript>alert('订阅成功,请确认手记号码!');</script>");没执行就进行了Redirect,即没有弹出对话框就直接转到另一页去了
如何解决这个问题,我在网上查了一下,原因是 Redirect 方法是服务器端方法,而 alert() 是客户端方法,Redirect 由于在服务器端无法判断客户端的 alert 是否已经执行。
可以这样:
Response.Write ("<script language=javascript>alert('......');window.location='Login.aspx'</script>");
这种方法对于普通的asp.net也许可以,但是我使用的是DNN,我试了一下不行,,它的页面都是tabid等于多少来表示哪个页面的,比如"**/tabid/56/Default.aspx"
所以我最终的解决方法是:
Dim altstr As String = ""
altstr = "恭喜您!订阅成功!\n" + "您的手机号是:" + UserInfo.Profile.Unit + "请确认以便接受订阅信息!"
Dim jsString As String = ""
jsString = String.Format("<script> alert('{0}');window.location='{1}'</script>", altstr, NavigateURL(PortalSettings.UserTabId))
Me.Response.Write(jsString)
经过实践,完全成功!