有人习惯用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类的一些常用方法:
注:Page类也提供了有一些注册脚本的方法,比如:Page.RegisterClientScriptBlock(),这些方法的功能与ClientScriptManager中的同名方法类似,并且在ASP.NET 2.0中已不推荐使用。
典型应用:客户端调用服务器方法
如果希望不回发页面就调用服务端,可以使用ClientScriptManager类操作客户端和服务器端的两个方法,让其实现相互调用。本例要实现一个数据库填充功能,当用户输入城市名称后,客户端调用服务器方法获取此城市内的区域,并填充到下拉列表中。