2012-12-26 114 views
1

我看到了一塊ASP代碼如下所示:ASP Classic使用反射嗎?

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

因爲我懷疑,記錄有一個名爲「Server.HTMLEncode(X)」我在想,如果他們的意思寫場:

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

或者,如果經典的ASP做反射,並以某種方式將該字符串解釋爲方法調用。

回答

1

我使用了十年的經典ASP,而且我從未遇到任何反射。根據我過去的經驗,我會同意你的意見,他們可能會寫:

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

但是,它仍然看起來不正確。他們是否用Response.Write寫出了值?沒有看到更多的代碼,我無法分辨。

看起來像壞編碼給我。

0

經典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)) %>