ASP.NET 中对 JavaScript 的支持
在 ASP.NET 中,System.Web.UI.ClientScriptManager 用来管理脚本,此类可以通过页面对象的 ClientScript 属性取得。通过这个对象可以管理网页中的脚本。
由于可能多次向同一个页面中加入脚本,或者需要检查页面中是否已经加入过脚本,ClientScriptManager 的许多方法使用了字典集合来进行检查,注册一个脚本内容的时候,需要提供一个字符串类型的资源名称,这个名称可以用来检查是否已经在页面中加入过同样的脚本。
从方法的用途可以分为两类,一类用于检查页面中是否已经加入过资源,这一类的方法以 IsRegister 开头,另一类用于在页面对象中注册脚本资源,这一类的方法以 Register开头。
根据注册的内容,我们还可以将这些方法分成如下的类别:
数组
定义 JavaScript 数组,生成一个 JavaScript 的数组到页面中。
在 JavaScript 程序中,可以如下定义数组
var arrayName = new Array() { 数组的初值 };
例如:
var myArray = new Array() { “One”, “Two”, “Three” };
public void RegisterArrayDeclaration(
string arrayName,
string arrayValue
)
参数:
arrayName:数组的名字
arrayValue:数组的值,用字符串表示,就是在 JavaScript 程序中定义在花括号内的内容
脚本块
注册脚本块,一般用于将 JavaScript 的函数注册到页面中
用于判断是否已经注册过指定的脚本块
public bool IsClientScriptBlockRegistered(
string key
)
将脚本块注册到页面中
public void RegisterClientScriptBlock(
Type type,
string key,
string script
)
启动脚本块
注册启动脚本块,一般用于将需要直接执行的 JavaScript 语句注册到页面中
判断是否已经注册过指定的启动脚本块
public bool IsStartupScriptRegistered(
string key
)
注册启动脚本块
public void RegisterStartupScript(
Type type,
string key,
string script
)
包含外部的脚本文件
判断是否已经注册过指定名称的脚本文件
public bool IsClientScriptIncludeRegistered(
string key
)
注册包含外部的脚本文件
public void RegisterClientScriptInclude(
string key,
string url
)
页面元素的属性
为页面元素定义新的属性并赋值
public void RegisterExpandoAttribute(
string controlId,
string attributeName,
string attributeValue
)
controlId 页面元素的 ID
attributeName 新增加的属性名称
attributeValue 属性的值
隐藏域
在页面中增加隐藏域
public void RegisterHiddenField(
string hiddenFieldName,
string hiddenFieldInitialValue
)
hiddenFieldName 隐藏域的名字
hiddenFieldInitialValue 隐藏域的值
注册当执行表单提交动作时执行的脚本
public void RegisterOnSubmitStatement(
Type type,
string key,
string script
)
在页面中生成 javascript:__doPostBack( 元素ID, 参数 ) 的脚本
public string GetPostBackClientHyperlink(
Control control,
string argument
)
与前面相比,没有 javascript: 前缀,用于客户端脚本编程中,生成一个用来回发请求道服务器的脚本字符串。
public string GetPostBackEventReference(
Control control,
string argument
)
资源
生成到编译到程序集中的资源的链接
public string GetWebResourceUrl(
Type type,
string resourceName
)
资源可以是脚本文件,图片文件或者任何其它的静态文件。这个方法常常和下面的 RegisterClientScriptResource 方法联合使用。
注册已经编译到程序集中的 JavaScript 资源文件嵌入到页面中
public void RegisterClientScriptResource(
Type type,
string resourceName
)
附
在程序集中加入资源的方法:
1. 将文件包含在项目中
2. 选择该文件的属性,将“生成操作”属性设为“嵌入的资源”。
3. 注意此资源的名称前面会自动加上默认的命名空间,比如项目的默认命名空间为 com.myspace,此文件为 jQuery.js,如果此文件加入到项目的根目录,则资源名称为 com.myspace.jQuery.js。如果被加入到项目的子文件夹中,还有再加上子文件的名称,例如:如果加入到项目根目录下的 Scripts 子文件夹中,则资源的名称变为:com.myspace.Scripts.jQuery.js。
4. 为程序集标注包含资源的程序集,可以有两种方法:
a) 在 assembly.cs 中,增加一个标签
[assembly.WebResource[“资源名称”, “类型”]
b) 在项目的任何一个 cs 文件中,在命名空间之外增加
[assembly.WebResource[“资源名称”, “类型”]
5. 使用GetWebResourceUrl 可以得到基于 WebResource.axd 的访问路径。