0

いくつかの選択ボックスがある古典的なASPページがあります。入力パラメーターを含まないストアド プロシージャによって設定されたボックスは正常に機能します。

私の問題は、特定のレコード リストを入力する必要がある選択ボックスがある場合に発生します。これは、ユーザーが開いている現在のレコードに基づいており、これをパラメータとしてストアド プロシージャに渡します。SPを呼び出す次のコードがあります:

'Return Possible RTA Contracts
Dim RecordsetApply
Dim RecordsetApply_cmd
Dim RecordsetApply_numRows

Set RecordsetApply_cmd = Server.CreateObject ("ADODB.Command")
RecordsetApply_cmd.ActiveConnection = GLData_connection_STRING
RecordsetApply_cmd.CommandText = "return_rtacontractlist"
RecordsetApply_cmd.CommandType = adCmdStoredProc
RecordsetApply_cmd.Parameters.Append RecordsetApply_cmd.CreateParameter("ContractIDParam", adVarChar, adParamInput, 50)
RecordsetApply_cmd("ContractIDParam") = RecordsetContract__GLColParam

Set RecordsetApply = RecordsetApply_cmd.Execute
RecordsetApply_numRows = 0

これは、選択ボックスに正しいデータが取り込まれている限り問題なく機能しますが、ページ HTML の残りの部分はレンダリングを停止します。選択ボックスのコードは次のとおりです。

<td><span id="sprytextfield24">
            <select style="font-size:12px" name="rtacontract" id="rtacontract">
                <%
                While (NOT RecordsetApply.EOF)
                    %>
                    <option value="<%=(RecordsetApply.Fields.Item("ContractID").Value)%>"><%=(RecordsetApply.Fields.Item("ContractDesc").Value)%></option>
                    <%
                    RecordsetApply.MoveNext()
                    Wend
                    If (RecordsetApply.CursorType > 0) Then
                        RecordsetApply.MoveFirst
                    Else
                        RecordsetApply.Requery
                    End If
                    %>
                </select><br />Apply Remainder To*<br />
            <span class="textfieldRequiredMsg">Field Required</span></span></td>

パラメータを削除し、実際に SP のレコードをハード コーディングすると、ページは正常に読み込まれます。もちろん、これは解決策としては機能しません。

私はこれにかなり慣れていないので、これが私が犯した単純な間違いであることを願っています.

4

1 に答える 1

0

サーバー側のコード自体は問題ないようです。ほとんどの場合、取得したデータは HTML (生の HTML を含むなど) を「壊している」ため、安全のためにエンコードすることをお勧めします。

<option value="<%=Server.HTMLEncode(RecordsetApply.Fields.Item("ContractID").Value)%>"><%=Server.HTMLEncode(RecordsetApply.Fields.Item("ContractDesc").Value)%></option>
于 2013-09-29T10:14:10.963 に答える