C# WebForms服务端弹出消息框封装类
由于ASP.NET运行于服务器端,无法直接弹出现象级对话框。本方案通过在C#后端封装静态方法,向页面输出特定JavaScript代码(如 alert 或第三方模态框调用),以解决这一限制。该封装类兼容传统WebForms环境。
准备条件与依赖
使用前需确保项目引用了 System.Web 命名空间。该组件旨在为WebForms应用程序提供便捷的服务端交互反馈手段,依赖于客户端已定义的全局辅助函数(如 popMessage)来实现复杂的模态窗口效果。
核心功能操作顺序
第1步:实例化与注册
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace DotNet.Utilities
{
/// <summary>
/// 页面常用方法包装
/// </summary>
public class ShowMessageBox
{
#region 信息显示
/// <summary>
/// 显示提示信息
/// </summary>
/// <param name="message"></param>
public static void ShowMG(string message)
{
WriteScript("alert('" + message + "');");
}
/// <summary>
/// 显示提示信息
/// </summary>
/// <param name="message">提示信息</param>
public static void ShowMessage(string message)
{
ShowMessage("系统提示", 180, 120, message);
}
/// <summary>
/// 显示提示信息
/// </summary>
/// <param name="message">提示信息</param>
public static void ShowMessage_link(string message, string linkurl)
{
ShowMessage_link("系统提示", 180, 120, message, linkurl, 8000, -1);
}
/// <summary>
/// 显示提示信息
/// </summary>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="message">提示信息</param>
private static void ShowMessage(string title, int width, int height, string message)
{
ShowMessage(title, width, height, message, 3000, -1);
}
/// <summary>
/// 显示提示信息
/// </summary>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="message"></param>
/// <param name="delayms"></param>
/// <param name="leftSpace"></param>
private static void ShowMessage(string title, int width, int height, string message, int delayms, int leftSpace)
{
WriteScript(string.Format("popMessage({0},{1},'{2}','{3}',{4},{5});", width, height, title, message, delayms, leftSpace == -1 ? "null" : leftSpace.ToString()));
}
/// <summary>
/// 显示提示信息
/// </summary>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="message"></param>
/// <param name="delayms"></param>
/// <param name="leftSpace"></param>
private static void ShowMessage_link(string title, int width, int height, string message, string linkurl, int delayms, int leftSpace)
{
WriteScript(string.Format("popMessage2({0},{1},'{2}','{3}','{4}',{5},{6});", width, height, title, message, linkurl, delayms, leftSpace == -1 ? "null" : leftSpace.ToString()));
}
#endregion
#region 显示异常信息
/// <summary>
/// 显示异常信息
/// </summary>
/// <param name="ex"></param>
public static void ShowExceptionMessage(Exception ex)
{
ShowExceptionMessage(ex.Message);
}
/// <summary>
/// 显示异常信息
/// </summary>
/// <param name="message"></param>
public static void ShowExceptionMessage(string message)
{
WriteScript("alert('" + message + "');");
//PageHelper.ShowExceptionMessage("错误提示", 210, 125, message);
}
/// <summary>
/// 显示异常信息
/// </summary>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="message"></param>
private static void ShowExceptionMessage(string title, int width, int height, string message)
{
WriteScript(string.Format("setTimeout(\"showAlert('{0}',{1},{2},'{3}')\",100);", title, width, height, message));
}
#endregion
#region 显示模态窗口
/// <summary>
/// 返回把指定链接地址显示模态窗口的脚本
/// </summary>
/// <param name="wid"></param>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="url"></param>
public static string GetShowModalWindowScript(string wid, string title, int width, int height, string url)
{
return string.Format("setTimeout(\"showModalWindow('{0}','{1}',{2},{3},'{4}')\",100);", wid, title, width, height, url);
}
/// <summary>
/// 把指定链接地址显示模态窗口
/// </summary>
/// <param name="wid">窗口ID</param>
/// <param name="title">标题</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
/// <param name="url">链接地址</param>
public static void ShowModalWindow(string wid, string title, int width, int height, string url)
{
WriteScript(GetShowModalWindowScript(wid, title, width, height, url));
}
/// <summary>
/// 为指定控件绑定前台脚本:显示模态窗口
/// </summary>
/// <param name="control"></param>
/// <param name="eventName"></param>
/// <param name="wid"></param>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="url"></param>
/// <param name="isScriptEnd"></param>
public static void ShowCilentModalWindow(string wid, WebControl control, string eventName, string title, int width, int height, string url, bool isScriptEnd)
{
string script = isScriptEnd ? "return false;" : "";
control.Attributes[eventName] = string.Format("showModalWindow('{0}','{1}',{2},{3},'{4}');" + script, wid, title, width, height, url);
}
/// <summary>
/// 为指定控件绑定前台脚本:显示模态窗口
/// </summary>
/// <param name="cell"></param>
/// <param name="eventName"></param>
/// <param name="wid"></param>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="url"></param>
/// <param name="isScriptEnd"></param>
public static void ShowCilentModalWindow(string wid, TableCell cell, string eventName, string title, int width, int height, string url, bool isScriptEnd)
{
string script = isScriptEnd ? "return false;" : "";
cell.Attributes[eventName] = string.Format("showModalWindow('{0}','{1}',{2},{3},'{4}');" + script, wid, title, width, height, url);
}
#endregion
#region 显示客户端确认窗口
/// <summary>
/// 显示客户端确认窗口
/// </summary>
/// <param name="control"></param>
/// <param name="eventName"></param>
/// <param name="message"></param>
public static void ShowCilentConfirm(WebControl control, string eventName, string message)
{
ShowCilentConfirm(control, eventName, "系统提示", 210, 125, message);
}
/// <summary>
/// 显示客户端确认窗口
/// </summary>
/// <param name="control"></param>
/// <param name="eventName"></param>
/// <param name="title"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="message"></param>
public static void ShowCilentConfirm(WebControl control, string eventName, string title, int width, int height, string message)
{
control.Attributes[eventName] = string.Format("return showConfirm('{0}',{1},{2},'{3}','{4}');", title, width, height, message, control.ClientID);
}
#endregion
/// <summary>
/// 写javascript脚本
/// </summary>
/// <param name="script">脚本内容</param>
public static void WriteScript(string script)
{
Page page = GetCurrentPage();
// NDGridViewScriptFirst(page.Form.Controls, page);
page.ClientScript.RegisterStartupScript(page.GetType(), System.Guid.NewGuid().ToString(), script, true);
}
/// <summary>
/// 得到当前页对象实例
/// </summary>
/// <returns></returns>
public static Page GetCurrentPage()
{
return (Page)HttpContext.Current.Handler;
}
}
}
第2步:执行与完成判断
在Web表单的代码后台(.cs文件)中调用对应方法。若使用简单提示 ShowMG 或 ShowExceptionMessage,将在用户浏览器触发标准JS警告框;若使用 ShowMessage 配合自定义参数,则预期调用前端定义的复杂模态UI函数。脚本由 RegisterStartupScript 注入,保证在DOM加载后按序执行。
第3步:排错与注意事项
部分高级弹窗接口(如 ShowModalWindow、ShowCilentConfirm)依赖前端存在名为 showModalWindow、showConfirm 等的JS函数。若仅引入此C#库而未在前端引入配套脚本,将无视觉反馈。遇到空指针时,请检查 HttpContext.Current.Handler 是否为null,这通常发生在非HTTP上下文的控制台测试中。
简要总结
以上就是C#实现ASP.NET WebForms服务端弹窗提示的详细逻辑与方法,更多关于C#开发技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









