编写服务器控件时,向页面写入脚本的方法

转载 2004年07月06日 14:26:00
在编写服务器控件时,经常需要向页面发送大量的客户端代码。一般情况下我们可以直接用output.Write() 写到页面,但这样会带来一个几个问题:
      1、如果同一个页面有几个这样的服务器控件,是不是同样的客户端代码要被写到客户端好几次?
      2、如果让页面自动运行相应的客户端脚本? 
    其实这些问题ASP.NET里已提供了解决方法。
    在Page类里有几个方法:
    RegisterClientScriptBlock      可以向页面中发送客户端代码块(当然可以不仅仅是脚本,也可以是其它的文本),这段代码会被写到Form里的开始部分
   
IsClientScriptBlockRegistered   根据一个页面级的Key来判断某段由RegisterClientScriptBlock发送的客户端代码是否已被发送到了客户端。
    RegisterStartupScript    可以向页面中发送客户端代码块,这段代码会被写到Form里的结束部分。这样就可以如其名称一样,在页面加载完成后写入一段自动运行的代码
    IsStartupScriptRegistered  根据一个页面级的Key来判断某段由RegisterStartupScript发送的客户端代码是否已被发送到了客户端
    通过上面的几个方法就可以解决上述的两个问题。

   示例:

        //生成客户端脚本<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

        private string GetClientScript()

        {

            return @"

??????????????????????? function ClientFunction()

??????????????????????? {

??????????????????????????? 具体的实现

??????????????????????? }

??????????????????? ";

        }

 

        //生成自动运行的客户端脚本

        private string GetClientStartUpScript()

        {

            return @"

??????????????????????????? 具体的实现

??????????????????? ";

        }

 

        //在预呈现事件里加入客户端脚本

        protected override void OnPreRender(EventArgs e)

        {

            if(!Page.IsClientScriptBlockRegistered("ClientScriptKey1"))

                Page.RegisterClientScriptBlock("ClientScriptKey1",GetClientScript());

            Page.RegisterStartupScript("ClientScriptKey2",GetClientStartUpScript());

            base.OnPreRender(e);

        }

       ToolTips:
     向页面注册客户端脚本要在预呈现里完成,如果在Redner里来做则不会启作用。
     在写大段的客户端脚本时,可以在文本前加入@,这样,引起来的字符器的换码序列将“不”被处理,这样就可以轻松写出字符串。如果要在字符器里包括一个双引号,请使用两对双引号。
  

编写服务器控件时,向页面写入脚本的方法

在编写服务器控件时,经常需要向页面发送大量的客户端代码。一般情况下我们可以直接用output.Write() 写到页面,但这样会带来一个几个问题:      1、如果同一个页面有几个这样的服务器控件,...
  • powerboy
  • powerboy
  • 2007-09-29 22:31:00
  • 340

ASP.NET页面中获取服务器控件的客户端ID

有的时候前台页面中需要判断服务器控件的属性用服务器控件的ID是不行的,但我们可以用服务器控件ClientID属性来获取到可供DOM使用的客户端的ID如下: document.getElementBy...
  • Zh_GY
  • Zh_GY
  • 2014-03-13 20:20:55
  • 1747

当使用母版页时JavaScript客户端获取服务器控件的Id

当使用MasterPage、UserControl等容器时,为了避免控件的重复命名,asp.net会自动将容器中的控件生成一个ClientID(Control Tree中的可生成,否则不会生成)。 ...
  • xujunheng
  • xujunheng
  • 2014-09-09 18:53:35
  • 675

asp.net如何获取页面动态生成的服务器控件

一般我们会通过页面控件的id来操作各项,如果页面动态生成的控件我们如何查找了,page类提供了一个方法Page.FindControl(),此方法的参数就是控件的ID; 如果页面有动态生成的个控件需要...
  • w200221626
  • w200221626
  • 2016-09-08 13:35:31
  • 983

ASP.NET - 如何:禁用 ASP.NET 服务器控件验证

      在特定条件下,您可能需要避开验证。例如,您可能具有一个页面,即使用户没有正确填写所有验证字段,也应该可以发送页。您可以设置 ASP.NET 服务器控件来避开客户端和服务器的验证,而不只是客...
  • dodream
  • dodream
  • 2009-12-17 13:18:00
  • 1765

<ASP.NET>给服务器控件赋值

从我的网易博客移动。。。。。 在ListView中Itemtemplate添加了个服务器控件button。经过服务器渲染后。就很难取到该button的ID。所以在ItemDataBound中...
  • fengyun1989
  • fengyun1989
  • 2012-03-22 20:50:29
  • 1893

服务器端控件ID在Jquery中的读取

txtLoginID为服务器端文本控件,想要在jquery中取到它客户端的ID需要进行如下转换 $("#").blur(function(){ var loginID=$(this).va...
  • limlimlim
  • limlimlim
  • 2013-08-22 14:40:06
  • 1335

asp.net 中服务器端控件动态添加和删除

PlaceHolder :控件容器,本身不显示,主要用来放服务器控件的,只显示其子元素(他里面的控件) 服务器控件动态添加和删除 PlaceHolder  中动态添加服务器端控件添加控件的一般方法:声...
  • yangtang_newton
  • yangtang_newton
  • 2007-03-28 09:06:00
  • 1130

vs2005: 使用类视图的向导添加方法或变量的时候会报脚本错误

在网络上查说vs2005和Ie8有冲突,搜索一下,大概是要在注册表中增加一项内容,如下所示 Windows Registry Editor Version 5.00 [HKEY_CURRENT_U...
  • funnyfu0101
  • funnyfu0101
  • 2011-09-22 12:12:21
  • 2059

前台后台验证 后台像前台编写JavaScript脚本 在控件中添加属性值 母版页以及占位符 内容页

1.前台JavaScript验证。 2.后台的服务器验证。 3.在后台程序中向前台编写JavaScript脚本。  1)Response.Write("alert('注册成功');");     问题...
  • WangBurn
  • WangBurn
  • 2015-09-12 21:35:29
  • 586
收藏助手
不良信息举报
您举报文章:编写服务器控件时,向页面写入脚本的方法
举报原因:
原因补充:

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