| public class MyClickButton : Button{ //相关代码 ...... protected override void AddAttributesToRender(HTMLTextWriter writer) { base.AddAttributesToRender(writer); writer.AddAttribute("onclick", "window.confirm('谢谢您! ');"); } } |
| <%@ Page Language = "C#" %> <%@ Register TagPrefix="Custom" Namespace="MyControls" Assembly = "MyControls" %> <HTML> <body> <form runat=server> 请点击下面的按钮 <Custom:MyClickButton Id = "demo" runat=server/> <br> </form> </body> </HTML> |
当用户点击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 事件而执行的脚本。该脚本在提交页之前执行,允许您取消提交。