當我們在撰寫Asp.Net時, 如果要讓程式於執行完成時,
可出現Message,最常的用法是在codebehidn寫入下方程式:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Msg", "<script>alert('執行成功');</script>");
即可讓程式在Response時,寫入client的script,跳出訊息視窗.
但當遇到希望可以回傳成功的訊息,並跳轉導入其他頁面.
如果使用下方的寫法:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Msg", "<script>alert('執行成功');</script>"); Page.Response.Redirect("xxx.aspx");
先註冊一段client端的Script,接著再將Response導至預期的頁面。
看似一切都沒什麼問題,但當實際執行時,便會發生訊息不見的冏境。
實際分析了一下,原因很簡單,因為頁面已經被導至其他頁面了.
所以被註冊在原始頁面的Script,當然不會被執行到囉!
自然而然,訊息是不會出現的.
可是那要怎麼辦呢?!沒有辦法可以做到這個功能嗎?!
有的,可參考下面的這行程式:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Msg", "<script>alert('執行成功'); window.location = 'xxx.aspx';</script>");
發現了嗎?!我們將導至其他頁面的動作,保留到Client再由JavaScript去完成他!
這樣就可以在不影響訊息顯示的情況下,依然導入預期頁面了!
這就是好用的JavaScript "windows.location"!