Asp.net中使用javascrip的模态窗体的一点体会

转载 2005年04月23日 17:04:00

       今天用Asp.net写了个OA系统,感觉写起来,真麻烦,尤其是要不断地弹出新增、修改的窗口,感觉每次敲代码是一种痛苦。所以,稍稍总结了一下,将模块窗口的弹出丢在了一个公共类(Function)的方法里面进行处理(其实早就该这么做)。
      eg:
      public string ModalWindow(string openAspxPage,int width,int height)
      {
               string js = string.Format("javascript:window.showModalDialog(/"{0}/",window,/"status:false;dialogWidth:{1}px;dialogHeight:{2}px/")",openAspxPage,width,height);
              return js;
      }

      本来想用StringBuilder来写的,可是StringBuilder写起来实在麻烦,干脆就换了string,反正影响不大。
       另外,又写了一个关闭页面的方法,写得粗糙一些,将就着用吧
      public string ClosePage()
      {
             StringBuilder js = new StringBuilder();
             js.Append("<script language=/"JavaScript/">");
             js.Append("window.close();");
             js.Append("</script>");
             return js.ToString();
      }


       项目中,除了添加、修改的页面是Aspx,其它的都是ascx。
       感觉上,就是openApxPage的大小不太好控制,而且上面写的代码并不适合于DataGrid控件中的LinkButton控件,所以又得再写一个方法重载了。

      使用模态窗口时,还得注意三个问题:
      1、要弹出的页面中,一定要保证<head></head>标签间有<base target=“_self”>,否则会弹出的模态窗口上,点击按钮时,会再次弹出一个新页面。
      2、被弹出页面的按钮的事件处理中,应该有Response.Write(new Function().ClosePage());语句,用以关闭当前的模态窗口。
      3、因为幽默的缓存原因,如果你在模态窗口中修改了数据,你会发现,父页面上的数据刷新了,但是当你再点击按钮,重新弹出模态窗口时,你会发现模态窗口中的内容还是上次的内容,经过我试验,手动改了html代码后,点击弹出的模态窗口还是弹出相同的页面,所以,这里要绕开这个机制,方法是在被弹出的aspx页面后加上随机参数。上面模态窗口代码可以改成如下,以避免此问题:

      public string ModalWindow(string openAspxPage,int width,int height)
      {
               string js = string.Format("javascript:window.showModalDialog(/"{0}&rand="+new Random().Next().ToString()+ "/",window,/"status:false;dialogWidth:{1}px;dialogHeight:{2}px/")",openAspxPage,width,height);
              return js;
      }
   
      注意红字部分参数,是自定义的一个参数,此参数应该是整个项目中唯一的变更名称,并且无意义(最保险的办法是把这个变更命名为lakjsdflawdfqwoifa之类的名称)。
      基本上,满足了上述条件,做页面时就操作模态窗口,相对就简单了。
      如果还想做得简单一些,可以把ModalWindow 方法写得更完善一些,因为时间较紧,所以这里的东西比较粗糙。有空时,把它改一下,并完善一下Function类的内容,增加一些常用的JavaScript的代码,让它成为可配置的数据。
     对了,有空时应该把什么“有声有色“之类的软件里自带的JavaScript代码改动一下,重新做一个专门的JavaScript特效.net类库,到时好用。

ASP.NET 的模态窗体的处理

(一) 模态窗体的处理方法 1  javascript 语法:   var returnValue = window.showModalDialog(sURL [, vArguments] ...
  • sena163
  • sena163
  • 2011年12月12日 21:18
  • 120

使用 ASP.NET Web 窗体路由

什么是路由?假设您有一个名为 RecipeDisplay.aspx 的 ASP.NET Web 窗体,此窗体位于一个名为 Web Forms 的文件夹中。使用此 Web 窗体查看方案时,传统方法是...

使用反射将业务对象绑定到 ASP.NET 窗体控件

发布日期 : 12/10/2004 | 更新日期 : 12/10/2004John DyerDallas Theological Seminary适用于:Microsoft Visual Studio...
  • wnety
  • wnety
  • 2011年07月10日 18:36
  • 394

用javascrip在asp.net中窗口相关操作总结

这些代码全部写在和页面分离的代码页中(codebehind),如果要嵌入到*.aspx页面,可能会出现问题.  1.打开新窗口  这个简单:Response.Write(@"    language=...

ASP.NET 弹出窗体选择控件

" type="text/css" rel="stylesheet">  

ASP.net的窗体身份验证

asp.net的身份验证类型如下:                              在我们实际的工作中,froms身份验证用的还是比较多的,我们接下来详细说一下:         ...

asp.net 关闭自动刷新父窗体及各种弹窗汇总

刷新父窗口,子窗体,及各种条件触发下的页面关闭及自动刷新窗体。

asp.net 自动刷新父窗体

弹出消息"" Response.Write("alert('成功!');window.opener.location.href=window.opener.location.href;");...

asp.net中的窗体身份验证(不同的角色访问不同的目录)

在《asp.net中的窗体身份验证(最简单篇)》说明了如何让通过了身份验证的用户访问网站,但是该方法中有一个缺点,就是访问整个网站都需要用户身份验证。因此,在《asp.net中的窗体身份验证(分目录验...

初识ASP.NET MVC窗体验证与权限过滤---1.窗体身份验证

一直不懂如何解决web系统的登录权限控制问题,在最开始的时候,我用了一个很土的方法。用户登录成功后就把用户的身份信息写到一个会话cookie中。这种方法非常的脆弱而且不安全。比如a用户登录后没有退出功...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Asp.net中使用javascrip的模态窗体的一点体会
举报原因:
原因补充:

(最多只允许输入30个字)