ASP.NET下实现真正的模态窗口

     在网上找了些关于ASP.NET使用模态窗口(showModalDialog)的例子,都不是很好用,通常的问题为,在弹出的模态窗口中如何点一下服务器端的Button(有回发事件执行)时,就会弹出和此窗口一样的新窗口并且不在是模态窗口,感觉不能在弹出的窗口中使用任何服务端事件,只能用一些客户端事件及JS脚本控制,这是asp.net中自提交页面造成的.这样的模态窗口根本不能满足要求.我要实现一个真正的模态窗口,在模态窗口中可以做任何与普通页面一样的功能.还有一种实现模态窗口方法就是使用框架结构(frameset)实现起来没有问题,就是麻烦点,要提供一个框架页面.
     经过多方面总结我实现了个真正的模态窗口,也是使用框架页面实现,不过是个通用的过程.不增加任何多余的页面。支持传递参数,窗口标题自定义,可以使用showModalDialog或showModelessDialog.

1,前台代码,没有实现任务功能,只是为了提供页面请求

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="modalframe.aspx.cs" Inherits="WebApplication1.modalframe" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5.     <title></title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.     
  11.     </div>
  12.     </form>
  13. </body>
  14. </html>

2,后台C#

 

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. namespace WebApplication1
  8. {
  9.     public partial class modalframe : System.Web.UI.Page
  10.     {
  11.         protected void Page_Load(object sender, EventArgs e)
  12.         {
  13.             string st, atitle, myurl;
  14.             if (!IsPostBack)
  15.             {
  16.                 int ind;
  17.                 st = Request.RawUrl;
  18.                 ind = st.ToLower().IndexOf("src=");
  19.                 if (ind >= 0)
  20.                 {
  21.                     st = st.Substring(ind + 4); //, st.Length - ind - 4);
  22.                     //st = st.Replace("src=", "");
  23.                 }
  24.                 else
  25.                 {
  26.                     st = "about:blank";
  27.                 }
  28.                 myurl = st;
  29.                 atitle = Request.RawUrl;
  30.                 ind = atitle.ToLower().IndexOf("title");
  31.                 if (ind >= 0)
  32.                 {
  33.                     // '得到title
  34.                     st = Request.RawUrl;
  35.                     int indx2 = st.ToLower().IndexOf("src=");
  36.                     atitle = atitle.Substring(ind + 6, indx2 - 1 - ind - 6);
  37.                     if (atitle == "")
  38.                         atitle = "『dacong』";
  39.                 }
  40.                 else
  41.                 {
  42.                     atitle = "『dacong』";
  43.                 }                
  44.                 Response.Write("<!DOCTYPE html PUBLIC /"-//W3C//DTD XHTML 1.0 Transitional//EN/" /"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd/">");
  45.                 Response.Write("<html  xmlns=/"http://www.w3.org/1999/xhtml/">");
  46.                 Response.Write(" <head>");
  47.                 Response.Write("    <title>" + atitle + "</title>");
  48.                 Response.Write(" </head>");
  49.                 Response.Write(" <frameset border='0' frameSpacing='0' rows='254' frameBorder='0'>");
  50.                 Response.Write("     <frame name='mainframe' src=" + "/"" + myurl + "/"" + ">");
  51.                 Response.Write(" </frameset>");
  52.                 Response.Write("</html>");
  53.                 Response.Flush();
  54.                 Response.End();
  55.             }
  56.         }
  57.     }
  58. }

3测试页面,js代码

  1.  function Button6_onclick() {
  2.             var TmpURLStr = "modalframe.aspx?src=webform2.aspx?id=dacong";
  3.             //var TmpURLStr = "modalframe.aspx?src=webform2.aspx?id=dacong&id2=p1"; //多参数
  4.             //var TmpURLStr = "modalframe.aspx?title=李大聪&src=webform2.aspx?id=dacong"; //增加标题
  5.             var sFeatures = 'center=yes;dialogWidth:800px;dialogHeight:400px;toolbar=no,scrollbars=no;status:no; help:no;scroll:no;resizable:no';
  6.             var str = window.showModalDialog(TmpURLStr, 'order_maintain', sFeatures); //执行模态;
  7.             //var str = window.showModelessDialog(TmpURLStr, 'order_maintain', sFeatures); //执行非模态;
  8.             //alert(str);
  9.         }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值