0

有人可以解释一下这个问题吗:

我有以下内容:

    $(document).ready(function () {
    $("#txtFirstContact").autocomplete({url:'http://localhost:7970/Home/FindSurname' });
});

在我的 Asp.Net 页面上。http 请求是 MVC 控制器上的一个函数,代码在这里:

    Function FindSurname(ByVal surname As String, ByVal count As Integer)
    Dim sqlConnection As New SqlClient.SqlConnection
    sqlConnection.ConnectionString = My.Settings.sqlConnection
    Dim sqlCommand As New SqlClient.SqlCommand

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & surname & "%'"

    sqlCommand.Connection = sqlConnection

    Dim ds As New DataSet
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand)
    da.Fill(ds, "Contact")
    sqlConnection.Close()

    Dim contactsArray As New List(Of String)
    For Each dr As DataRow In ds.Tables("Contact").Rows
        contactsArray.Add(dr.Item("ConSName"))
    Next
    Return Json(contactsArray, JsonRequestBehavior.AllowGet)

End Function

据我所知,控制器正在返回 JSON 数据,但是我不知道函数参数是否正确,或者返回的格式是否可由 AutoComplete 插件解释。

如果有人能在这件事上提供帮助,我将不胜感激。

4

2 回答 2

0

该函数需要接受一个名为 q 的参数,其中包含搜索文本。您可以使用 extraParams 选项传递计数,但默认情况下不传递。

我在 MVC 控制器操作中返回的内容实际上是使用 StringBuilder.AppendLine 为搜索结果中的每条记录构建的新行分隔列表。

高温高压

这是 MVC 中使用的一个很好的例子http://geekswithblogs.net/renso/archive/2009/09/08/jquery-autocomplete-in-asp.net-mvc-framework.aspx

于 2010-03-24T15:40:54.723 回答
0

几乎可以正常工作,当然现在没有任何错误,但同样没有得到任何结果。

我现在正在使用内置 AutoComplete 的新版本的 JQuery,并且现在在文本框中获取我以前没有得到的动画轮 - 所以希望这是一个好兆头。

我的 MVC 功能是:

    Function FindSurname(ByVal q As String, ByVal limit As Integer) As String
    Dim sqlConnection As New SqlClient.SqlConnection
    sqlConnection.ConnectionString = My.Settings.sqlConnection
    Dim sqlCommand As New SqlClient.SqlCommand

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & q & "%'"

    sqlCommand.Connection = sqlConnection

    Dim ds As New DataSet
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand)
    da.Fill(ds, "Contact")
    sqlConnection.Close()
    Dim a As New StringBuilder
    For Each dr As DataRow In ds.Tables("Contact").Rows
        a.Append(dr.Item("ConSName"))
        a.AppendLine()
    Next
    Return a.ToString
End Function

aspx 页面上的脚本是:

    $(document).ready(function () {
    $("#txtFirstContact").autocomplete({    source: 'http://localhost:7970/Home/FindSurname/',
                                            minLength: 2
                                        });
});

同样,“minLength”参数似乎也可以正常工作,因为动画轮在我输入第二个字符之前不会“启动”。

任何额外的指针将不胜感激。

于 2010-03-29T09:04:54.930 回答