Ajax-вызов останавливается на полпути через код - PullRequest
0 голосов
/ 31 января 2012
<AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)> _
Public Function HandleSelect(ByVal table As String, ByVal eventSource As String, ByVal filterValue As String, ByVal targetControl As String) As StreetNameResponse

    Dim tName As TableName
    Dim filter As String = Nothing
    Dim sort As String = Nothing
    Dim textField As String = Nothing
    Dim valueField As String = Nothing
    Dim name As String = Nothing
    Dim onChange As String = Nothing
    'Assign security filter
    CheckSecurityFilter()

    Select Case table.ToLower
        Case "county"
            tName = TableName.County
            If filterValue = "-1" Or filterValue = "" Then
                If _restrictionLevel = RestrictionLevel.District Then
                    filter = _restrictionFilter
                End If
            Else
                filter = String.Format("maintdisnmbr in ({}0)", filterValue)
            End If
            tName = TableName.County
            sort = "countyname ASC"
            textField = "countyname"
            valueField = "countynmbr"
            name = "selCounty"
            onChange = "CheckSubmitEnabled();ajaxGetSelect('city','county', this, 'spanCity')"
        Case "city"
            If filterValue = "-1" Or filterValue = "" Then
                'No value selected, set the filter to the default security value
                If _restrictionLevel = RestrictionLevel.District Or _restrictionLevel = RestrictionLevel.County Then
                    filter = _restrictionFilter
                End If
            Else
                Select Case eventSource.ToLower
                    Case "district"
                        filter = String.Format("maintdisnmbr in ({0})", filterValue)
                    Case "county"
                        filter = String.Format("countynmbr in ({0})", filterValue)
                End Select
            End If

            tName = TableName.MasterCity
            sort = "sams_cityname ASC"
            textField = "sams_cityname"
            valueField = "cityname_value"
            name = "selCity"
            onChange = "CheckSubmitEnabled()"
    End Select
    Dim selOutput As HtmlSelect = BuildSelect(tName, filter, sort, textField, valueField, name, onChange)
    Dim outControl As New StreetNameResponse
    outControl.targetControl = targetControl
    outControl.outputControl = selOutput
    MyBase.ProperCaseSelectControl(selOutput)
    Return outControl
End Function

В приведенном выше коде у меня проблема с отладкой. Дело в том, что в HTML у меня есть три тега выбора. Район, округ и город. Если вы выбираете округ, он должен обновить округ и город, чтобы ограничить только округа или города в этом округе. Город работает отлично, а округ - нет. Я обнаружил, что при выполнении этого кода выше, если он проходит через сегмент County Case, он просто останавливает filter = String.Format ("maintdisnmbr in ({} 0)", filterValue). Если я шаг за шагом, код не заканчивается. Если я не пойду шаг за шагом и не прыгну вперед, это выдаст мне сообщение о том, что строка ввода не отформатирована. Это не мой код, и я не работал с Ajax, но я должен исправить это, пожалуйста, помогите, по крайней мере, выяснить, будет ли проблема великой.

1 Ответ

1 голос
/ 31 января 2012

Это:

"maintdisnmbr in ({} 0)"

Вместо этого должно выглядеть так:

"maintdisnmbr in ({0})"

Но это , если вы хотите быть уязвимыми для SQL инъекций. Если вам нужен хороший код, прочитайте эту серию статей о правильной передаче списка на сервер sql:

http://www.sommarskog.se/arrays-in-sql.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...