/// <summary> /// 메시지 출력 /// ctl 가 null 이 아니면 RegisterStartupScript 로 스크립트 추가되어지므로 호출후 Response.End()등으로 실행중지시 출력되어지지 않습니다. /// </summary> /// <param name="messageBoxDisplayKind">출력타입</param> /// <param name="title">메시지 캡션</param> /// <param name="text">메시지</param> /// <param name="messageType">메시지타입</param> /// <param name="messageButton">버튼타입</param> /// <param name="ctl">렌더링되는 페이지</param> /// <param name="returnUrl">메시지출력후 이동할 url</param> /// <param name="endResponse">프로세스 종료여부</param> public static void MessageBox(MessageBoxDisplayKind messageBoxDisplayKind, string title, string text, MessageType messageType, MessageButtons messageButton, System.Web.UI.Control ctl, string returnUrl = "", bool endResponse = false) { MessageBox(messageBoxDisplayKind, title, text, messageType, messageButton, (ctl != null) ? ctl.Page : null, returnUrl, endResponse); }
/// <summary> /// 메시지 출력 /// page 가 null 이 아니면 RegisterStartupScript 로 스크립트 추가되어지므로 호출후 Response.End()등으로 실행중지시 출력되어지지 않습니다. /// </summary> /// <param name="messageBoxDisplayKind">출력타입</param> /// <param name="title">메시지 캡션</param> /// <param name="text">메시지</param> /// <param name="messageType">메시지타입</param> /// <param name="messageButton">버튼타입</param> /// <param name="page">렌더링되는 페이지</param> /// <param name="returnUrl">메시지출력후 이동할 url</param> /// <param name="endResponse">프로세스 종료여부</param> public static void MessageBox(MessageBoxDisplayKind messageBoxDisplayKind, string title, string text, MessageType messageType = MessageType.Normal, MessageButtons messageButton = MessageButtons.Ok, System.Web.UI.Page page = null, string returnUrl = "", bool endResponse = true) { switch (messageBoxDisplayKind) { case MessageBoxDisplayKind.Page: var httpResponse = HttpContext.Current.Response; var param = string.Format("Title={0}&Content={1}&MessageType={2}&MessageButton={3}&ReturnUrl={4}", title.UrlEncode(), text.UrlEncode(), (int)messageType, (int)messageButton, returnUrl.UrlEncode()); var url = UrlParamConcat(AppSettings.MessageBoxUrl, param); httpResponse.Redirect(url, endResponse); return; default: #region StringBuilder buffer = new StringBuilder(); try { buffer.Append(@"alert("); buffer.Append(AntiXssTool.JavaScriptEncode((title.IsNotWhiteSpace() ? "[" + title + "]\n\n" : string.Empty) + text)); buffer.Append(@");"); // Alert이고 닫기 타입이 Close 이면 창을 닫는다. if (messageButton == MessageButtons.Close) { buffer.Append(SR.CloseWindowJavascript); } else if (returnUrl.IsNotWhiteSpace()) { buffer.AppendFormat("window.location.href={0};", AntiXssTool.JavaScriptEncode(returnUrl)); } if (page != null) { //이미 추가되었다면 if (page.ClientScript.IsStartupScriptRegistered(page.GetType(), page + "_MessageBox")) { ScriptManager.RegisterStartupScript(page, page.GetType(), page + "_MessageBox", buffer.ToString(), true); } else { ScriptManager.RegisterStartupScript(page, page.GetType(), page + "_MessageBox", buffer.ToString(), true); } } else { HttpContext.Current.Response.Output.Write(WrapScriptTag(buffer.ToString())); } } finally { buffer = null; } #endregion break; } }
/// <summary> /// 메시지 출력 /// page 가 null 이 아니면 RegisterStartupScript 로 스크립트 추가되어지므로 호출후 Response.End()등으로 실행중지시 출력되어지지 않습니다. /// </summary> /// <param name="messageBoxDisplayKind">출력타입</param> /// <param name="title">메시지 캡션</param> /// <param name="text">메시지</param> /// <param name="messageType">메시지타입</param> /// <param name="messageButton">버튼타입</param> /// <param name="page">렌더링되는 페이지</param> /// <param name="returnUrl">메시지출력후 이동할 url</param> /// <param name="endResponse">프로세스 종료여부</param> public static void MessageBox(MessageBoxDisplayKind messageBoxDisplayKind, string title, string text, MessageType messageType = MessageType.Normal, MessageButtons messageButton = MessageButtons.Ok, System.Web.UI.Page page = null, string returnUrl = "", bool endResponse = true) { switch(messageBoxDisplayKind) { case MessageBoxDisplayKind.Page: var httpResponse = HttpContext.Current.Response; var param = string.Format("Title={0}&Content={1}&MessageType={2}&MessageButton={3}&ReturnUrl={4}", title.UrlEncode(), text.UrlEncode(), (int)messageType, (int)messageButton, returnUrl.UrlEncode()); var url = UrlParamConcat(AppSettings.MessageBoxUrl, param); httpResponse.Redirect(url, endResponse); return; default: #region StringBuilder buffer = new StringBuilder(); try { buffer.Append(@"alert("); buffer.Append(AntiXssTool.JavaScriptEncode((title.IsNotWhiteSpace() ? "[" + title + "]\n\n" : string.Empty) + text)); buffer.Append(@");"); // Alert이고 닫기 타입이 Close 이면 창을 닫는다. if(messageButton == MessageButtons.Close) { buffer.Append(SR.CloseWindowJavascript); } else if(returnUrl.IsNotWhiteSpace()) { buffer.AppendFormat("window.location.href={0};", AntiXssTool.JavaScriptEncode(returnUrl)); } if(page != null) { //이미 추가되었다면 if(page.ClientScript.IsStartupScriptRegistered(page.GetType(), page + "_MessageBox")) ScriptManager.RegisterStartupScript(page, page.GetType(), page + "_MessageBox", buffer.ToString(), true); else ScriptManager.RegisterStartupScript(page, page.GetType(), page + "_MessageBox", buffer.ToString(), true); } else { HttpContext.Current.Response.Output.Write(WrapScriptTag(buffer.ToString())); } } finally { buffer = null; } #endregion break; } }