如何在Response.Redirect前彈出alert對話方塊
我曾遇到這樣的問題,代碼如下:
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)
經過實踐,完全成功!