gpt4 book ai didi

asp-classic - 如何从 ASP Classic 中的变量调用方法?

转载 作者:行者123 更新时间:2023-12-04 03:13:10 28 4
gpt4 key购买 nike

例如,我如何运行下面的 me.test?

myvar = 'test'
me.myvar

ASP 查找方法“myvar”但没有找到。在 PHP 中我可以简单地说 $me->$myvar 但 ASP 的语法不区分变量和方法。有什么建议吗?

与此密切相关,ASP Classic中是否有method_exists函数?

提前致谢!

编辑: 我正在编写一个验证类,并希望通过竖线分隔的字符串调用方法列表。

例如,要验证名称字段,我会调用:

validate("required|min_length(3)|max_length(100)|alphanumeric")

我喜欢用一行显示验证给定字段的所有方式的想法。字符串的每个管道分隔部分是一个方法的名称。

如果您有更好的设置建议,我会洗耳恭听!

最佳答案

您可以使用 GetRef 函数在 VBScript 中实现此目的:-

Function Test(val)
Test = val & " has been tested"
End Function

Dim myvar : myvar = "Test"
Dim x : Set x = GetRef(myvar)
Response.Write x("Thing")

将向客户端发送“Thing has been tested”。

所以这是您使用 GetRef 验证的要求:-

validate("Hello World", "min_length(3)|max_length(10)|alphanumeric")


Function required(val)
required = val <> Empty
End Function


Function min_length(val, params)
min_length = Len(val) >= CInt(params(0))
End Function


Function max_length(val, params)
max_length = Len(val) <= CInt(params(0))
End Function


Function alphanumeric(val)
Dim rgx : Set rgx = New RegExp
rgx.Pattern = "^[A-Za-z0-9]+$"
alphanumeric = rgx.Test(val)
End Function


Function validate(val, criterion)

Dim arrCriterion : arrCriterion = Split(criterion, "|")
Dim criteria

validate = True

For Each criteria in arrCriterion

Dim paramListPos : paramListPos = InStr(criteria, "(")

If paramListPos = 0 Then
validate = GetRef(criteria)(val)
Else
Dim paramList
paramList = Split(Mid(criteria, paramListPos + 1, Len(criteria) - paramListPos - 1), ",")
criteria = Left(criteria, paramListPos - 1)
validate = GetRef(criteria)(val, paramList)
End If
If Not validate Then Exit For
Next

End Function

既然提供了这个,我不得不说,如果您熟悉 PHP,那么 JScript 将是服务器上更好的选择。在 Javascript 中,您可以调用这样的方法:-

function test(val) { return val + " has been tested"; )
var myvar = "test"
Response.Write(this[myvar]("Thing"))

关于asp-classic - 如何从 ASP Classic 中的变量调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335659/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com