在 ASP.NET 也能使用 MessageBox 彈出對話方塊的功能
[ 前言 ]
當我們在寫 Windows Form 的時候可能會用到 MessageBox 的功能,但是在 ASP.NET 上雖然還是可以使用,但是真正把網站透過 IIS 執行之後會發現無法使用,出現如下的警告訊息。當應用程式不使用 UserInteractive 模式執行時,顯示強制回應對話方塊或表單不是有效的作業。指定 ServiceNotification 或 DefaultDesktopOnly 樣式以顯示來自服務應用程式的告知。
難道真的不能使用彈出式對話方塊了嗎? 當然是可以的,我們可以改成使用 Javascript 的 alert 方法來實現 MessageBox 的功能,以下有3種方法。
[ 使用 Response.Write ]
Response.Write("");
[ 使用 RegisterStartupScript ]
/// <summary> /// 執行 Javascript /// </summary> /// <param name="page">Page 頁面</param> /// <param name="strJavascript">Javascript 指令</param> /// <remarks></remarks> public static void ExecuteJavascript(Page page, string strJavascript) { if (ScriptManager.GetCurrent(page) == null) { page.ClientScript.RegisterStartupScript(page.GetType(), strJavascript, strJavascript, true); } else { ScriptManager.RegisterStartupScript(page, page.GetType(), strJavascript, strJavascript, true); } }如果有使用 UpdatePanel 則改成如下程式碼。
/// <summary> /// 使用 UpdatePanel 執行 Javascript /// </summary> /// <param name="up">UpdatePanel 控制項</param> /// <param name="strJavascript">Javascript 指令</param> /// <remarks></remarks> public static void ExecuteJavascript(UpdatePanel up, string strJavascript) { ScriptManager.RegisterStartupScript(up, up.GetType(), strJavascript, strJavascript, true); }
[ 使用 RegisterClientScriptBlock ]
/// <summary> /// 執行 Javascript /// </summary> /// <param name="page">Page 頁面</param> /// <param name="strJavascript">Javascript 指令</param> /// <remarks></remarks> public static void ExecuteJavascript(Page page, string strJavascript) { if (ScriptManager.GetCurrent(page) == null) { page.ClientScript.RegisterClientScriptBlock(page.GetType(), strJavascript, strJavascript, true); } else { ScriptManager.RegisterClientScriptBlock(page, page.GetType(), strJavascript, strJavascript, true); } }如果有使用 UpdatePanel 則改成如下程式碼。
/// <summary> /// 使用 UpdatePanel 執行 Javascript /// </summary> /// <param name="up">UpdatePanel 控制項</param> /// <param name="strJavascript">Javascript 指令</param> /// <remarks></remarks> public static void ExecuteJavascript(UpdatePanel up, string strJavascript) { ScriptManager.RegisterClientScriptBlock(up, up.GetType(), strJavascript, strJavascript, true); }
[ RegisterStartupScript 與 RegisterClientScriptBlock 的差別]
RegisterStartupScript 會把 JavaScript 函式會直接出現在 HTML 指令碼的 </form> 項目結尾之前。RegisterClientScriptBlock 會把 JavaScript 函式會直接出現在 HTML 指令碼的 <form> 項目開頭之後。
留言
張貼留言
1. 文章如有錯誤,歡迎指正。
2. 請勿打廣告,違者一律刪。
3. 歡迎您提供寶貴的意見。