创建定制的ASP.NET AJAX非可视化客户端组件(1)(3)
上面的代码首先通过调用Type.registerNamespace方法实现注册Demo命名空间。ASP.NET AJAX开发小组建议,最好在构造器中声明和初始化所有的private域,例如在这个示例中初始化了interval域。接下来,构造器调用继承的initializeBase方法,以便使用基类Component中的方法。然后,被初始化的基类使用客户端应用程序把此Demo.Timer实例注册为一个可释放的对象。
在这个prototype中,声明并初始化private域(例如interval)。在此,这个prototype定义了两个public属性:interval和enabled;还定义了针对每一个属性的get和set访问器方法。在每一个public属性的set访问器方法中,通过调用propertyChanged方法激活一个propertyChanged事件。这样以来,每次改变此属性时,页面开发者都会得到通知。
上面的add_tick和remove_tick方法支持页面开发者添加和删除监听tick事件的委托处理器。这些方法通过该组件的事件处理器集合来添加或删除指定的处理器。你可以通过组件的Sys.EventHandlerList对象来添加和删除你的组件类中的委托处理器。EventHandlerList对象包含一个该组件的事件处理器的集合―通过继承的Sys.Component.events属性实现。在本示例中,该代码调用返回的EventHandlerList对象的Sys.EventHandlerList.addHandler和Sys.EventHandlerList.removeHandler方法,以便为了添加或删除指定的处理器。
这个Demo.Timer类重载了基类的dispose方法以便更新enabled属性并且向开发人员指示此组件已经被禁用。通过enabled属性的set访问器可以激发propertyChanged事件以便发送通知。然后,调用private型_stopTimer方法以停止激发tick事件。最后,调用基类中的dispose方法来支持应用程序释放掉该组件。
六、在Web页面中应用Demo.Timer组件
在一个页面中的客户端组件实例可以托管给一个服务器控件或由Web页面中的客户端脚本所使用。现在,我们来讨论如何创建一个组件实例―通过在Web页面中使用客户端脚本的方式。
启动Visual Studio 2005,选择“文件→新建网站…”,然后选择“ASP.NET AJAX-Enabled Web Site”模板,命名工程为“NoVisComponentTest”,并选择C#作为编程语言,最后点击OK。
把文件名Default.aspx更改为DemoTimer.aspx。然后,把该文件源码内容修改为:
|

