次のような 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 を 10 年間使用してきましたが、反省点に遭遇したことはありません。私の過去の経験に基づいて、彼らがおそらく次のように書くつもりだったことに同意します。
<% Server.HTMLEncode(rs(x)) %>
しかし、それでも正しく見えません。Response.Write を使用して値を書き出すつもりでしたか? コードをもっと見ないとわかりません。
私には悪いコーディングのように見えます。
従来の ASP は VBScript を使用して記述できます。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)) %>