`
javatoyou
  • 浏览: 1008321 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ASP.NET Ajax实现弹出提示框,页面变灰不可点击

 
阅读更多

最近在网上看到一篇文章,讲ASP.NET ajax中的异常处理,有一部分是自定义javascript处理异常。突然想到网易邮箱中,弹出对话框,后边的页面变灰且不可点击的效果。
在网上找了一下,实现方法就是用两个层,一个层用来显示提示信息,一个层用来遮住页面;还有一个办法就是用iframe.两者的不同之处大概就在于iframe可以遮住全部的页面元素,而div则不能遮住下拉列表。

我这个例子使用的div,绝大部分引用了:http://www.cnblogs.com/Terrylee/archive/2006/11/13/Customizing_Error_Handling.html

代码如下:
Default.aspx 前台页面及javascript

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title>Untitled Page</title>
  6. <style type="text/css">
  7. #UpdatePanel1{
  8. width: 200px; height: 50px;
  9. border: solid 1px gray;
  10. }
  11. #AlertDiv{
  12. left: 40%; top: 40%;
  13. position: absolute; width: 200px;
  14. padding: 12px;
  15. border: #000000 1px solid;
  16. background-color: white;
  17. text-align: left;
  18. visibility: hidden;
  19. z-index: 99;
  20. }
  21. #AlertButtons{
  22. position: absolute; right: 5%; bottom: 5%;
  23. }
  24. </style>
  25. </head>
  26. <body id="bodytag" style="margin: 0px">
  27. <form id="form1" runat="server">
  28. <asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" />
  29. <script type="text/javascript">
  30. var divElem = 'AlertDiv';
  31. var messageElem = 'AlertMessage';
  32. var bodyTag = 'bodytag';
  33. var sWidth,sHeight;
  34. sWidth=document.body.offsetWidth;//浏览器工作区域内页面宽度
  35. sHeight=screen.height;//屏幕高度(垂直分辨率)
  36. //背景层(大小与窗口有效区域相同,即当弹出对话框时,背景显示为放射状透明灰色)
  37. var bgObj=document.createElement("div");//创建一个div对象(背景层)
  38. //定义div属性,即相当于
  39. // <div id="bgDiv" style="position:absolute; top:0; background-color:#777; filter:progid:DXImagesTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75); opacity:0.6; left:0; width:918px; height:768px; z-index:19999;"></div>
  40. bgObj.setAttribute('id','bgDiv');
  41. bgObj.style.position= "absolute";
  42. bgObj.style.display="none";
  43. bgObj.style.top= "0";
  44. bgObj.style.background= "#777";
  45. bgObj.style.filter= "progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75)";
  46. bgObj.style.opacity= "0.6";
  47. bgObj.style.left= "0";
  48. bgObj.style.width=sWidth + "px";
  49. bgObj.style.height=sHeight + "px";
  50. bgObj.style.zIndex = "10000";
  51. $get(bodyTag).appendChild(bgObj);
  52. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
  53. function ToggleAlertDiv(visString)
  54. {
  55. if (visString == 'hidden')
  56. {
  57. $get('bgDiv').style.display="none";
  58. $get(bodyTag).style.backgroundColor = 'white';
  59. }
  60. else
  61. {
  62. $get('bgDiv').style.display="";
  63. }
  64. var adiv = $get(divElem);
  65. adiv.style.visibility = visString;
  66. }
  67. function ClearErrorState() {
  68. $get(messageElem).innerHTML = '';
  69. ToggleAlertDiv('hidden');
  70. }
  71. function EndRequestHandler(sender, args)
  72. {
  73. if (args.get_error() != undefined)
  74. {
  75. var errorMessage;
  76. if (args.get_response().get_statusCode() == '200')
  77. {
  78. errorMessage = args.get_error().message;
  79. }
  80. else
  81. {
  82. errorMessage = 'An unspecified error occurred. ';
  83. }
  84. args.set_errorHandled(true);
  85. ToggleAlertDiv('visible');
  86. $get(messageElem).innerHTML = errorMessage;
  87. }
  88. }
  89. </script>
  90. <div>
  91. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  92. <ContentTemplate>
  93. <asp:TextBox ID="TextBox1" runat="server" Width="30px"></asp:TextBox>
  94. /<asp:TextBox ID="TextBox2" runat="server" Width="30px"></asp:TextBox>&nbsp;<asp:Button
  95. ID="Button1" runat="server" OnClick="Button1_Click" Text="Execute" />
  96. <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
  97. </ContentTemplate>
  98. </asp:UpdatePanel>
  99. <div id="AlertDiv" style="z-index: 20000;">
  100. <div id="AlertMessage">
  101. </div>
  102. <br />
  103. <div id="AlertButtons">
  104. <input id="OKButton" type="button" value="OK" runat="server" onclick="ClearErrorState()" />
  105. </div>
  106. </div>
  107. </div>
  108. </form>
  109. </body>
  110. </html>

Default.aspx.cs 后台页面

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. public partial class _Default : System.Web.UI.Page
  11. {
  12. protected void Page_Load(object sender, EventArgs e)
  13. {
  14. }
  15. protected void Button1_Click(object sender, EventArgs e)
  16. {
  17. try
  18. {
  19. int a = Int32.Parse(TextBox1.Text);
  20. int b = Int32.Parse(TextBox2.Text);
  21. int res = a / b;
  22. Label1.Text = res.ToString();
  23. }
  24. catch (Exception ex)
  25. {
  26. if (TextBox1.Text.Length > 0 && TextBox2.Text.Length > 0)
  27. {
  28. ex.Data["ExtraInfo"] = " You can't divide " +
  29. TextBox1.Text + " by " + TextBox2.Text + ".";
  30. }
  31. throw ex;
  32. }
  33. }
  34. protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
  35. {
  36. if (e.Exception.Data["ExtraInfo"] != null)
  37. {
  38. ScriptManager1.AsyncPostBackErrorMessage =
  39. e.Exception.Message +
  40. e.Exception.Data["ExtraInfo"].ToString();
  41. }
  42. else
  43. {
  44. ScriptManager1.AsyncPostBackErrorMessage =
  45. "An unspecified error occurred.";
  46. }
  47. }
  48. }

ok!本章到此结束!

分享到:
评论

相关推荐

    asp.net 实现弹出窗口功能

    在 web应用中,比如OA中,经常要用到一些提示,比如EMAIL到达了,就做个象MSN那样的提示框,弹出给用户提示,然后再关闭。在ASP.net 2.0的ajax中,这个现在不难做到了,刚好看到老外的一篇文章,讲解到,下面小结之

    asp.net知识库

    如何在Asp.Net1.1中实现页面模板(所谓的MasterPage技术) Tool Tip 示例(FILTER版) Tool Tip示例 (htc版) 一个.net发送HTTP数据实体的类 按键跳转以及按Enter以不同参数提交,及其他感应事件 动态控制Page页的...

    ExtAspNet_v2.3.2_dll

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    AJAX 验证框架13个

    一 ASP.NET AJAX Framework 1、ValidatorCallout 是ASP.NET AJAX Control Toolkit中的一员,老瓶装新酒,通过扩展的方式为ASP.NET的验证控件提供漂亮的弹出提示效果。缺点是:目前的版本还不能提供服务端Custom ...

    DotNetTextBox V6.0.10 商业版 下载 (已知最新)

    6)增加AjaxSupport目录,使用此目录的文件覆盖原版同名文件后重新编译即可解决在Asp.Net Ajax UpdatePanel下工作不正常的BUG!(不需要使用asp.net ajax的用户无需覆盖此目录的文件) 7)增加asp.net ajax的演示例子...

    第7章 数据绑定控件

    实例214 GridView删除数据时弹出确认对话框 (含内容提示) 340 实例215 GridView数据源为空时显示表头和 提示信息 341 实例216 创建表头固定、表体可滚动的 GridView控件 342 实例217 可拖动列、可排序、可改变宽度...

    。net图书管理系统设计方案

    (5)设定相应的安全机制,由于数据库的信息对特定用户有特殊的保密要求,保密机制必不可少。 数据库需求分析 根据以上的需求分析和数据组织,开始设计数据结构,即根据需求勾画出实体/关系图(E/R)。在概念上,E/R...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

Global site tag (gtag.js) - Google Analytics