【发布时间】:2011-03-09 20:46:01
【问题描述】:
我正在维护一个 ASP.NET 站点,并尝试使用 jQuery 使对话框看起来更好。 Web 应用程序有一个名为 MessageBox 的 C# 类,它允许从服务器端向客户端显示消息....基本上在 C# 中的 aspx 代码隐藏中,如果某些逻辑“不计算”,您可以只使用 MessageBox.Show( '你的错误信息');
由于 MessageBox 类似乎只是“注入”javascript...“警报(您的消息)”我尝试将 javascript 更改为 jquery 对话框调用:
html:标准的jQuery示例对话框...(故意切断标签...只是为了让代码示例显示...这里可能有一种真正的方法...但是这是我的第一篇文章...)
div id="dialog" title="示例对话框"> p>一些你想显示给用户的文本。/p> /div>jQuery: 我注释掉了警报,并替换为: sb.Append("$('dialog').dialog('open');");
而(iMsgCount--> 0) { sMsg = (string) queue.Dequeue(); sMsg = sMsg.Replace("\n", "\\n"); sMsg = sMsg.Replace("\"", "'"); //sb.Append(@"alert(""" + sMsg + @""" );" ); **** sb.Append("$('dialog').dialog('open');"); **** }我希望这会打开以 html 设置的对话框,但没有显示任何内容。 我认为 javascript 是 javascript……而执行 jQuery 调用与手动警报无关……但显然存在断开连接。
关于如何解决这个问题的任何想法?还是我不知道的更好的实现?
感谢您提供任何和所有帮助...我在下面包含了完整的 MessageBox 类。
简陋。
公共类消息框 { 私有静态哈希表 m_executingPages = new Hashtable(); 私有 MessageBox(){} 公共静态无效显示(字符串 sMessage) { 如果(!m_executingPages.Contains(HttpContext.Current.Handler)) { Page executionPage = HttpContext.Current.Handler as Page; 如果(执行页面!= null) { 队列 messageQueue = new Queue(); messageQueue.Enqueue(sMessage); m_executingPages.Add(HttpContext.Current.Handler, messageQueue); executionPage.Unload += new EventHandler(ExecutingPage_Unload); } } 别的 { 队列 queue = (Queue) m_executingPages[ HttpContext.Current.Handler ]; queue.Enqueue(sMessage); } } private static void ExecutingPage_Unload(object sender, EventArgs e) { 队列 queue = (Queue) m_executingPages[ HttpContext.Current.Handler ]; 如果(队列!= null) { StringBuilder sb = new StringBuilder(); int iMsgCount = queue.Count; sb.Append(""); 字符串短信; 而(iMsgCount--> 0) { sMsg = (string) queue.Dequeue(); sMsg = sMsg.Replace("\n", "\\n"); sMsg = sMsg.Replace("\"", "'"); sb.Append(@"alert(""" + sMsg + @""");"); } sb.Append(@""); m_executingPages.Remove(HttpContext.Current.Handler); HttpContext.Current.Response.Write(sb.ToString()); } } }【问题讨论】:
-
是的,MessageBox 类只适用于普通的 ol' 警报,因此我希望我可以切换一些 javascript,并获得所需的结果...
标签: c# asp.net jquery dialog messagebox