天天看点

ASP中的EVAL函数

  近两日,学习了ASP的EVAL函数。感觉上很实用,如果使用得当,能减轻很多代码的编写量,也使得代码更加简洁明了。

  EVAL函数的原型:

  EVAL(expression)

  其中expression是字符串参数,可以是表达式,可以是变量,甚至可以是语句。但都是以字符串的形式出现。

  例如

  b=EVAL("A=5")

  这句代码意思是判断变量A的值,是否等于5,等于返回TRUE,不等于返回FALSE。等同于b=(A=5)。不过,该函数的灵活就在于他的参数是以字符串的形式存在的。这样我可以构造字符串,相当于执行该字符串的语句。

  再例如:

  b=EVAL("A")

  这句代码是返回变量A的值。由于ASP是隐式定义的,当没有定义A时,返回空字符串。

  在例如:

  b=EVAL("CustFunction(2,3)")

  这句代码执行函数CustFunction(2,3),将返回值给b。看到这,想到什么?嗯,多态。

  由于EVAL函数的参量是字符串,我合理的构造字符串能实现很多看起来不可能的事情。

  下面一段代码,是利用EVAL函数来实现构造链接URL的代码。具有一定的通用性。

  

1 Dim zID, zOrder, zOrderBy, zCurPage

2  Dim zPageCount, zURL

3

4  Dim zMM(), zMMPara()

5

6 redim zMM(0)

7 redim zMMPara(0)

8

9 Public Sub AddPara(Para, Default, ParaType)

10 ReDim Preserve zMM(UBound(zMM) + 1)

11 ReDim Preserve zMMPara(UBound(zMM))

12 If ParaType = 1 Then

13 zMM(UBound(zMM)) = Para & "=" & Default

14 Else

15 zMM(UBound(zMM)) = Para & "=""" & Default & """"

16 End If

17 zMMPara(UBound(zMM)) = Para

18 End Sub

19

20 Public Function GetURL(URL)

21 Dim i, tS

22 tS = ""

23 For i = 1 To UBound(zMM)

24 If Eval(zMM(i)) = False Then

25 tS = tS & "&" & Mid(zMMPara(i), 2) & "=" & Eval(zMMPara(i))

26 End If

27 Next

28

29 If Len(tS) > 0 Then

30 GetURL = URL & "?" & Mid(tS, 2)

31 Else

32 GetURL = URL

33 End If

34 End Function

35

36 Public Function GetNav(Index)

37 Dim tS

38 If zPageCount = 1 Then

39 GetNav = ""

40 End If

41 Select Case Index

42 Case 1

43 If zCurPage = 1 Then

44 GetNav = ""

45 Else

46 tS = zCurPage

47 zCurPage = 1

48 GetNav = "<span><a href=" & GetURL(zURL) & ">首页</a></span>"

49 zCurPage = tS

50 End If

51 Case 2

52

53 If zCurPage = 1 Then

54 GetNav = ""

55 Else

56 tS = zCurPage

57 zCurPage = zCurPage - 1

58 GetNav = "<span><a href=" & GetURL(zURL) & ">上一页</a></span>"

59 zCurPage = tS

60 End If

61

62 Case 3

63 If zCurPage = zPageCount Then

64 GetNav = ""

65 Else

66 tS = zCurPage

67 zCurPage = zCurPage + 1

68 GetNav = "<span><a href=" & GetURL(zURL) & ">下一页</a></span>"

69 zCurPage = tS

70 End If

71

72 Case 4

73 If zCurPage = zPageCount Then

74 GetNav = ""

75 Else

76 tS = zCurPage

77 zCurPage = zPageCount

78 GetNav = "<span><a href=" & GetURL(zURL) & ">末页</a></span>"

79 zCurPage = tS

80 End If

81

82 End Select

83 End Function

  这段代码,充分利用EVAL函数对于页面的四个参数zID, zOrder, zOrderBy, zCurPage进行URL的构造。且具有一定的通用性。只要适当的修改就可以了。

继续阅读