我看到一段ASP代码如下所示:
<% rs("Server.HTMLEncode(x)") %>
因为我怀疑记录集有一个名为&#34; Server.HTMLEncode(x)&#34;我想知道他们是否打算写:
<% Server.HTMLEncode(rs(x)) %>
或者,如果经典ASP进行反射并以某种方式将该字符串文字解释为方法调用。
答案 0 :(得分:1)
我使用经典ASP十年了,我从未遇到过任何反思。根据我过去的经验,我同意你的意见,他们可能会写:
<% Server.HTMLEncode(rs(x)) %>
但是,它仍然看起来不正确。他们是否意味着使用Response.Write写出值?如果没有看到更多代码,我无法分辨。
对我来说看起来很糟糕。
答案 1 :(得分:0)
经典ASP可以用VBScript编写, 允许使用Eval()
和Execute()
方法进行反射。例如:
Class Foo
Public Bar
End Class
Dim oFoo, propName, myValue
Set oFoo = New Foo
oFoo.Bar = "hello world"
propName = "Bar"
myValue = Eval("oFoo." & propName)
Response.Write("Value of " & propName & ":" & myValue)
但是,您的示例代码情况并非如此。这只是传递给Recordset对象的字符串文字,它寻找完全匹配。如果给定的参数是一个数字,它将返回具有此类索引的字段的值,否则它需要一个精确字段名称的字符串。
假设x
是用户输入,应该是字段名称或索引,它们可能意味着:
<%=rs(Server.HTMLEncode(x)) %>