ClientScriptManager类

有人习惯用Response.Write()方法向服务器端写Javascript代码,但是这样非常的不好,他破坏了已经为我们设计的页面结构,所以建议不要这样用,在ASP.NET中管理脚本,一般用System.Web.UI.ClientScriptManager类来管理脚本。ClientScriptManager类通过Page.ClientScript暴露。在控件内部,可以通过this.Page.ClientScript得到ClientScriptManager实例。

ClientScriptManager类是C#2.0中用来管理客户端脚本的类,可用其实现动态脚本的注册、服务器端方法与客户端方法的交互等。当不希望客户端回发(PostBack),又必须调用服务器端方法时,可以使用此类控制客户端的回调(CallBack)。

ClientScriptManager类可以通过4中方法动态添加客户端脚本:RegisterClientScriptBlock、RegisterClientScriptInclude、RegisterClientScriptResource和RegisterOnSubmitStatement。

语法定义:

ClientScriptManager类的语法定义如下:

public sealed class ClientScriptManager

一般不适用new关键字创建ClientScriptManager类,而是通过Page类的ClientScript属性获取,方法如下:

ClientScriptManager myclient = Page.ClientScript;

 

下面是ClientScriptManager类的一些常用方法:

—  RegisterArrayDeclaration——添加一个JavaScript数组到页面中。
—  RegisterClientScriptBlock——在页面的起始<form>标签后添加JavaScript脚本。方法呈现一些不会马上执行的代码,比如声明某个按钮的Click事件处理程序,
—  RegisterStartScript——在页面的结束<form>标签前添加JavaScript脚本。呈现页面加载完成后马上执行的代码,比如定义某个变量的初始值,对页面元素进行某种操作。
—  RegisterClientScriptInclude——在页面的起始服务端<form>标签后添加外部JavaScript文件引用。
—  RegisterClientScriptResource——添加已编译到程序集中的JavaScript资源文件的链接到页面中。
—  RegisterExpandoAttribute——生成为页面中的元素附加扩展属性的脚本(由于Javascript的动态特性,所以可以为对象随意附加属性)。
—  RegisterHiddenField——在页面的起始服务端<form>标签后添加一个隐藏表单域。
—  RegisterOnSubmitStatement——用于添加在页面回传服务端前执行的JavaScript脚本。
—  GetPostBackClientHyperLink——生成类似于javascript:__doPostBack(‘element’,’args’)的脚本,可用于完成回传服务端的链接。
—  GetPostBackEventReference——以GetPostBackClientHyperLink功能类似,只是没有javascript:前缀。
—  GetWebResourceUrl——生成编译到程序集中的资源文件的链接。
—  RegisterForEventValidation——生成事件验证代码,事件验证指事件回传后验证参数是否来源于最初呈现这些事件的服务端控件。需要在Config文件或页面指定中指定启用EnableEventValidation。
此外,ClientScriptManager类还有一大堆IsXXXResistered()方法,用来判断某个客户端代码是不是已经注册到了页面中。

注:Page类也提供了有一些注册脚本的方法,比如:Page.RegisterClientScriptBlock(),这些方法的功能与ClientScriptManager中的同名方法类似,并且在ASP.NET 2.0中已不推荐使用。

 

 

典型应用:客户端调用服务器方法

如果希望不回发页面就调用服务端,可以使用ClientScriptManager类操作客户端和服务器端的两个方法,让其实现相互调用。本例要实现一个数据库填充功能,当用户输入城市名称后,客户端调用服务器方法获取此城市内的区域,并填充到下拉列表中。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值