精通ASP.NET中弹出窗口技术

来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 07:08 点击:
    摘要:本文讨论如何以ASP.NET中的CodeBehind方式实现各种弹出窗口,实现与弹出窗口的交互。并探讨常用非标准IE浏览器对弹出的窗口的各种过滤行为及使用弹出窗口相应对策,以期给出使用弹出窗口的一个通用较优方案。
    关键词:ASP.NET、CodeBehind、过滤、COM接口、JavaScript、绑定
  
    作为Microsoft的最新建立动态Web网站的工具,ASP.NET相对于ASP和JSP在改变原始的Web编程方式方面有了长足的长进。它的代码与页面分离技术(CodeBehind)以及完善的Web服务器控件为程序员提供了一个更加符合传统编程的Web服务器端开发方式。但 Web编程还是有着与传统编程不相同的特点,这些特点决定了ASP.NET编程中必须以一些特殊的技巧来完成程序要求,弹出窗口正是这类编程方式的代表。相当多的编程书籍对弹出窗口采取缄默或者一语带过,似乎看不过弹出窗口的巨大使用天地。本文将为你解开弹出窗口使用中的大多数问题。
  
    为了提高网站的访问的并发度和吞吐量,与其它服务器脚本一样,ASP.NET同样使用了客户端脚本来减轻服务器的压力。ASP.NET到现在(1.1版)为止并不直接支持弹出窗口,必须通过JavaScript(或VBScript)来使用客户端弹出窗口。
  
    一、 警告窗口与在CodeBehind中使用客户端脚本的方式
  
    要在浏览器中弹出一个最简单的警告窗口,可以使用JavaScript语句:
  
  window.alert( [sMessage])
  
    其中,sMessage是提示信息。可惜,这样的弹出窗口是只有一个“确定”按钮,只能起到提示作用。如果我们要在删除记录时候弹出一个询问的弹出窗口,此时你需要使用:
  
  bConfirmed = window.confirm( [sMessage])
  
    其中:bConfirmed是返回值,sMessage是提示信息。这个弹出窗口有两种选择:“确定”或“放弃”,其选择的返回值放在bConfirmed中,可供代码作出判断。
  
    为了提高代码的可重用性与可读性,应当使JavaScript与Codehind相互溶合。通常有两种方式可以达到这样的效果。
  
    (1) 使用Response.Write方法:
  
    使用Response.Write方法早在ASP时代就已经被支持了。它可以把代码写到客户端,是一种相当方便且直观的方法。以下代码演示了如何使用Response.Write方法来显示一个警告信息。
  
  Private Sub btAlert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAlert.Click
  
  '演示Response.Write方法和alert窗口。
  
  Response.Write(" ")
  
  End Sub
  
    (2) 使用RegisterXXX方法
  
    如果你观察Response.Write的生成HTML代码,你会发现Response.Write方法生成的代码是写到了HTML代码的最开始,即标签之前。此时,所有的 HTML对象都还没有生成,如果要想使用HTML内的对象,并与之交互,就会出现“找不到对象”的错误。因此,笔者推荐一个更加符合CodeBehind 方式的方式----使用RegisterXXX方法。RegisterXXX包括:RegisterClientScriptBlock、 RegisterStartupScript以及用于判断的IsStartupScriptRegistered函数。
  
  RegisterStartupScript 的原型是:
  
  Overridable Public Sub RegisterStartupScript( _
  
  ByVal key As String, _
  
  ByVal script As String _
  
  )
  
    其中:key表示这个脚本的唯一标识,script是代表脚本的字符串。
  
    RegisterClientScriptBlock的原型与RegisterStartupScript相同,两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置。RegisterClientScriptBlock在 Page 对象的元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句(这在我们后面的例子中看到),则推荐使用 RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock或 Response.Write。
  
    为了防止在页面中反复加入脚本,在注册脚本时 ReisterStartupScript/RegisterClientScriptBlock使用了key作为注册的Key,然后在程序中可以使用 IsClientScriptBlockRegistered作判
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1