多数在表示层应用的
服务器控件主要由两个部分组成:服务器端功能和客户端功能。服务器端功能永远是服务器控件的核心,而随着技术的发展,客户端功能也逐渐变得越来越重要。只有两个部分互相配合,才能创建出功能强大、界面丰富的服务器控件。本文将讨论在服务器控件中实现客户端功能的相关问题,具体内容包括客户端功能概述、实现简单客户端功能、实现复杂客户端功能,以及部署客户端文件的实现方法等内容。
1. 客户端功能简介 在Web编程中,客户端功能传统上是由Web页开发人员负责,并且不被封装在服务器组件中。ASP.NET脱离了这一范畴并使服务器控件能够发出客户端脚本,从而使服务器控件能够将客户端处理与服务器端处理结合起来。实现客户端功能对于提高服务器控件的交互性和可扩展性的意义重大。例如,常见的TreeView、TabStrip、ToolBar控件等,这些优秀的服务器控件具有很强的交互性和丰富的用户界面,而这些特征的实现与客户端功能是密不可分的。
实现客户端功能的技术主要是客户端脚本(JavaScript、VBScript等)和DHTML。因此,作为一名合格的开发人员必须具有熟练应用这些技术的能力。除此之外,还要掌握将客户端功能与服务器控件密切结合的方法。这些内容包括:实现简单客户端功能、实现复杂客户端功能、部署客户端脚本文件的方法。
2. 实现简单客户端功能 如果自定义服务器控件的客户端功能比较简单,例如,仅仅是弹出窗口或者改变背景颜色等,那么对于这种情况,通过不使用单独的客户端脚本文件封装,而是直接在控件呈现中实现。其实现的关键是在控件的Attributes中添加适当的客户端处理
程序。以下实例说明从System.Web.UI.WebControls.Button类派生的控件MyClickButton,它为客户端单击事件提供事件处理程序。请看下面的代码:
public class MyClickButton : Button{ //相关代码 ...... protected override void AddAttributesToRender(HtmlTextWriter writer) { base.AddAttributesToRender(writer); writer.AddAttribute("onclick", "window.confirm('谢谢您! ');"); } } |
如果读者已经阅读了前面有关控件呈现的文章,那么很容易理解以上代码。以上代码重写了AddAttributesToRender方法,它为MyClickButton控件定义了一个名为onclick的Attribute,其值指示在客户端弹出一个包含自定义信息的确认窗口。如果读者所开发的服务器控件的客户端功能都比较简单,那么可以尝试利用重写AddAttributesToRender的方法予以实现。
下面是为使用MyClickControl控件而创建的ASPX页面源代码。
<%@ 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控件时,立刻弹出一个包含提示信息的确认窗口。需要注意的是弹出确认窗口并不是由于页面回传,而是用户激发客户端处理程序的结果。当点击"确定"按钮之后,才会发生页面回传。