我看到了一塊ASP代碼如下所示:ASP Classic使用反射嗎?
<% rs("Server.HTMLEncode(x)") %>
因爲我懷疑,記錄有一個名爲「Server.HTMLEncode(X)」我在想,如果他們的意思寫場:
<% Server.HTMLEncode(rs(x)) %>
或者,如果經典的ASP做反射,並以某種方式將該字符串解釋爲方法調用。
我看到了一塊ASP代碼如下所示:ASP Classic使用反射嗎?
<% rs("Server.HTMLEncode(x)") %>
因爲我懷疑,記錄有一個名爲「Server.HTMLEncode(X)」我在想,如果他們的意思寫場:
<% Server.HTMLEncode(rs(x)) %>
或者,如果經典的ASP做反射,並以某種方式將該字符串解釋爲方法調用。
我使用了十年的經典ASP,而且我從未遇到任何反射。根據我過去的經驗,我會同意你的意見,他們可能會寫:
<% Server.HTMLEncode(rs(x)) %>
但是,它仍然看起來不正確。他們是否用Response.Write寫出了值?沒有看到更多的代碼,我無法分辨。
看起來像壞編碼給我。
經典ASP可以使用VBScript其中確實允許通過使用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)) %>