zoukankan      html  css  js  c++  java
  • 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的构造。且具有一定的通用性。只要适当的修改就可以了。

      

  • 相关阅读:
    eclipse调试(debug)的时候,出现Source not found,Edit Source Lookup Path,一闪而过
    MyEclipse中的查找快捷键
    eclipse和myeclipse怎么在项目中查找指定代码?https://www.jb51.net/softjc/554889.html
    Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)
    Spring的应用上下文ApplicationContext
    springmvc中获取request对象,加载biz(service)的方法
    Spring中RequestContextHolder以及HandlerInterceptorAdapter的使用
    Spring 单元测试 RequestContextHolder.getRequestAttributes()).getRequest(); 为空的原因
    Lua整理——table库
    POJ 2377 Bad Cowtractors
  • 原文地址:https://www.cnblogs.com/grenet/p/1626190.html
Copyright © 2011-2022 走看看