1

我看到一段 ASP 代码如下所示:

<% rs("Server.HTMLEncode(x)") %>

由于我怀疑记录集有一个名为“Server.HTMLEncode(x)”的字段,我想知道他们是否打算写:

<% Server.HTMLEncode(rs(x)) %>

或者,如果经典 ASP 进行反射并以某种方式将该字符串文字解释为方法调用。

4

2 回答 2

1

我用了十年经典的 ASP,从来没有遇到过任何反思。根据我过去的经验,我同意你的观点,他们可能打算写:

<% Server.HTMLEncode(rs(x)) %>

但是,它看起来仍然不正确。他们的意思是使用 Response.Write 写出值吗?如果没有看到更多代码,我无法判断。

对我来说,这看起来像是糟糕的编码。

于 2012-12-26T14:03:30.167 回答
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)) %>
于 2012-12-27T09:29:51.913 回答