我看到一段 ASP 代码如下所示:
<% rs("Server.HTMLEncode(x)") %>
由于我怀疑记录集有一个名为“Server.HTMLEncode(x)”的字段,我想知道他们是否打算写:
<% Server.HTMLEncode(rs(x)) %>
或者,如果经典 ASP 进行反射并以某种方式将该字符串文字解释为方法调用。
我看到一段 ASP 代码如下所示:
<% rs("Server.HTMLEncode(x)") %>
由于我怀疑记录集有一个名为“Server.HTMLEncode(x)”的字段,我想知道他们是否打算写:
<% Server.HTMLEncode(rs(x)) %>
或者,如果经典 ASP 进行反射并以某种方式将该字符串文字解释为方法调用。
我用了十年经典的 ASP,从来没有遇到过任何反思。根据我过去的经验,我同意你的观点,他们可能打算写:
<% Server.HTMLEncode(rs(x)) %>
但是,它看起来仍然不正确。他们的意思是使用 Response.Write 写出值吗?如果没有看到更多代码,我无法判断。
对我来说,这看起来像是糟糕的编码。
经典的 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)) %>