VB方法的作用 我们例子中简单的VB组件将获得用户的名字和年龄,然后返回一个以天计的用户的年龄,而且有一个可选项,能够提醒某个用户是否已经超过了45岁。 如果我们向组件传送一个虚构的Eric Clapton作为方法的第一个参数值,将第二个参数设置为56,我们将得到下面的返回字符串: Eric Clapton is over 20440 days old. 如果我们将可选的第三个参数设置为True(这一参数将使方法判断用户是否已经超过45岁),我们将会得到下面的返回字符串: Eric Clapton is over 20440 days OLD. 由于使用了三个完全不同的变量━━用户的姓名、年龄以及表示他们是否超过了45岁,因此我们需要使用三个方法参数将这些信息从ASP文件传送给VB代码。在VB中,考虑要使用哪些数据类型是十分重要的。我们将使用一个名字为strName的字符串型变量表示用户的姓名,名字为intAge的整型变量表示用户的年龄,名字为blnAgeEmphasisOn的布尔型变量表明用户是否已经超过了45岁。 三个方法参数(传送给VB组件的方法代码的变量):
Option Explicit '它将要求我们必须定义所有的变量。 Public Function ExampleMethod(ByVal strName As String, _ ByVal intAge As Integer, _ Optional ByVal blnAgeEmphasisOn As Boolean = False) As String
下面我们就可以来建立返回的字符串了。我们可以通过方法的参数列表使用由ASP代码传送的strName变量值。首先将strName参数变量值与字符串“is over”连接起来。接下来我们将使用intAge参数变量计算一个已经生存的天数,然后在前面的字符串上再添加“age in days”字符串。需要注意的是,我们需要将intAge * 365二个整型数的乘积转换为字符串,然后才能将它组合在strReturnString字符串,VB中的Cstr()方法可以实现这一目的。
strReturnString = strName & " is over " & CStr(intAge * 365)
如果假设从ASP代码中传给组件的姓名为Eric Clapton,年龄参数为56,因此,strReturnString应当包含下面的内容: Eric Clapton is over 20440 我们最终的字符串会根据intAge变量的值是否超过45和blnAgeEmphasisOn变量是否设置为true再添加上 “days old”或“days OLD”。下面的代码可以实现该功能:
If blnAgeEmphasisOn And intAge > 44 Then strReturnString = strReturnString & " days OLD." Else strReturnString = strReturnString & " days old." End If
如果ASP代码没有将blnAgeEmphasisOn变量的值作为方法参数传送给组件,根据我们的方法定义,它的值将被缺省地设置为false。如果它被设置为true,而且intAge变量的值大于45,我们将得到下面的输出: Eric Clapton is over 20440 days OLD. 否则,我们会得到下面的输出: Eric Clapton is over 20440 days old. 为了将上面的字符串返回给调用组件的ASP代码,我们将字符串的值赋给方法的名字:
ExampleMethod = strReturnString
完整的方法代码如下所示:
Public Function ExampleMethod(ByVal strName As String, _ ByVal intAge As Integer, _ Optional ByVal blnAgeEmphasisOn As Boolean = False) As String '///// 建立局部变量 Dim strReturnString As String '///// 创建返回的变量的值 strReturnString = strName & " is over " & CStr(intAge * 365) '///// 完善strReturnString If blnAgeEmphasisOn And intAge > 44 Then strReturnString = strReturnString & " days OLD." Else strReturnString = strReturnString & " days old." End If '///// 返回字符串 ExampleMethod = strReturnString End Function
Set objReference = Server.CreateObject("ExampleProject.ExampleClass")
ASP Server对象的CreateObject()方法返回VB代码对象的地址,因此我们能够在ASP中调用类的任何一个public方法。需要注意的是,作为ASP CreateObject()方法的方法参数的是VB工程和类的名字,objReference用来保持组件的类的对象实例的引用。 在ASP文件中使用组件的方法 现在,我们就可以使用组件的类方法ExampleMethod,得到一个表明一个人以天计的寿命。下面的代码使用参数的值,并将从方法中返回的字符串的值赋给一个名字为strMethodReturn的变量:
将上面的ASP代码存储在一个ASP文件中,将会产生下面的字符串输出: Eric Clapton is over 20440 days OLD. 使ASP代码能够调用DLL文件 对我们的组件的测试就是让Windows知道它的存储位置以及ASP代码何时调用它。首先,在VB的菜单中选择“运行”图标或“运行/开始”,VB就会临时地向系统注册该组件。 提示:不能象加载HTML文件那样直接使用浏览器加载ASP文件,ASP文件必须通过WEB服务器被加载到浏览器上。 浏览器将显示出“Eric Clapton is over 20440 days OLD.”的字样。 为了使组件能够在其他的服务器上运行,它必须被编译成DLL文件,然后在服务器上注册。当然了,如果希望在开发用的计算机永久地使用该组件,也需要进行编译、注册。在其他计算机上运行该组件的唯一文件就是编译得到的DLL文件,当然了,这需要计算机已经安装了VB运行时间库文件。 如何编译组件源代码得到DLL文件以及如何在计算机上注册组件不是本篇文章的讨论范围,我们就不再详细叙述了。 作为编写IIS服务器端组件的一个副产品,我们可以从任何ASP文件和其他VB组件中调用编写的组件的方法,这将进一步提高代码的灵活性和模块化程度。 中国.Net俱乐部转载此文。让我们一起进步,共享人类技术资源。[www.chinaaspx.com]