Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)delvpublished in(发表于) 2014/1/8 7:00:52 ASP.NET,2.0服务器控件之客户端功能_[Asp.Net教程]
当用户点击MyClickControl控件时,立刻弹出一个包含提示信息的确认窗口。需要注意的是弹出确认窗口并不是由于页面回传,而是用户激发客户端处理程序的结果。当点击"确定"按钮之后,才会发生页面回传。
3. 实现复杂客户端功能 如果客户端功能比较复杂,这时一般将完成其功能的代码封装在客户端脚本文件中。为了将这些脚本文件与服务器控件紧密结合起来,.NET 2.0框架提供了将客户端脚本文件加入服务器控件所需的必要方法。这些方法基本都包含在ClientScriptManager类中。开发人员可以通过调用Page类的ClientScript属性来获取ClientScriptManager类实例。该类用于管理脚本、注册脚本和向页添加脚本。可能读者对于ClientScriptManager类有些陌生,它是ASP.NET 2.0的新增类。该类是专门用于替代已经停止使用的用于管理脚本的Page类的部分方法而创建的,例如,在ASP.NET 1.x中曾经出现的RegisterClientScriptBlock、RegisterStartupScript等等,这些方法都已经停止使用,而改用ClientScriptManager类的相关方法来实现。 下面列举了来自ClientScriptManager类的,与实现复杂客户端功能有关的几个常用方法。 (1)RegisterClientScriptBlock方法 向页的顶部添加一个脚本块。以字符串形式创建脚本,然后将其传递给方法,方法再将脚本添加到页中。可以使用此方法将任何脚本插入到页中。请注意,脚本可能在所有元素完成之前呈现到页中;因此,您可能无法从脚本中引用页上的所有元素。 (2)RegisterClientScriptInclude方法 与 RegisterClientScriptBlock 方法类似,但此方法将添加引用外部 .js 文件的脚本块。包含文件在任何其他动态添加的脚本之前添加;因此,您可能无法引用页上的某些元素。 (3)RegisterStartupScript方法 向页中添加一个脚本块,该脚本块在页完成加载后引发页的 onload 事件之前执行。该脚本通常不创建为事件处理程序或函数;它通常只包含要执行一次的语句。 (4)RegisterOnSubmitStatement方法 添加响应页的 onsubmit 事件而执行的脚本。该脚本在提交页之前执行,允许您取消提交。 (5)IsStartupScriptRegistered方法 确定Page对象是否注册了启动脚本。 (6)IsClientScriptBlockRegistered方法 确定Page对象是否注册了客户端脚本。 除了以上几个方法之外,ClientScriptManager类还包括其他一些相关方法,有兴趣的读者可以阅读相关资料。通过在服务器控件中灵活使用以上方法,我们可完成为控件加入客户端行为,同时也带来了以下好处: (1)有效的减少所显示页面的大小,因为很多有关客户端功能的代码都封装到了客户端脚本文件中,在控件中只需引用脚本文件的地址即可。 (2)由于同一控件共享脚本文件,因此通过浏览器的缓存机制,可以改善应用程序的性能。 (3)提高了控件的灵活性和可扩展性。通过修改脚本文件,控件开发者可以很容易的修改客户端功能而不用编译服务器控件。 另外,在对复杂客户端功能处理的过程中,有时还需要在客户端脚本中访问控件。控件开发者可以在脚本中访问呈现到客户端的对象,并且对其进行操作。下面来简单介绍一些有关内容。 Control基类有一个ClientID的属性,它作为所呈现的元素的ID属性呈现。ASP.NET动态为一个控件生成ClientID,并且确保页上每一控件的ClientID是唯一的。因此,可通过在文档对象模型中使用控件的ID在客户端上访问该控件(即,由该控件呈现的元素)。控件还可以使用ClientID为它可以呈现的任何附加元素(例如隐藏域)生成唯一名称。 将ClientID的值发出到内联脚本中(或者发出到脚本库的代码中)可能是较为棘手的,因为该ClientID必须插在字符串变量中的正确位置。以下实例使用转义符将ClientID插入构成内联脚本的字符串中。
赞