ASP.NET AJAX使用WebMethod自动完成?

时间:2012-03-23 17:48:43

标签: asp.net ajax vb.net autocomplete

我正在尝试使用自动完成功能,如果我在Web服务中调用没有参数的函数,它可以正常工作:

<WebMethod()> _
<Script.Services.ScriptMethod()> _
Public Function GetCompanyNames2() As String()

    Dim db As New DataClassesDataContext

    Dim company = From c In db.CT_Companies
                      Where c.CompanyName.Contains("Airport")
                      Select c.CompanyName

    Return company.ToArray

End Function

如果我尝试调用一个带参数的函数,我需要这样做,我可以在文本框中输入用户输入的文本,它根本不会打到函数,我放了一个休息时间指出它并且它永远不会达到断点:

<WebMethod()> _
<Script.Services.ScriptMethod()> _
Public Function GetCompanyNames(ByVal prefixTest As String) As String()

    Dim db As New DataClassesDataContext

    Dim company = From c In db.CT_Companies
                      Where c.CompanyName.Contains(prefixTest)
                      Select c.CompanyName

    Return company.ToArray

End Function

有人知道发生了什么吗?

以下是default.aspx的内容:

        <asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="~/AutoComplete.asmx" />
    </Services>
</asp:ScriptManager>
<div>
    <asp:TextBox ID="txtCompanyName" runat="server"></asp:TextBox>
    <ajaxToolkit:AutoCompleteExtender runat="server" ID="autoComplete1" TargetControlID="txtCompanyName"
        ServicePath="~/AutoComplete.asmx" ServiceMethod="GetCompanyNames" MinimumPrefixLength="1"
        EnableCaching="true" />
</div>

2 个答案:

答案 0 :(得分:0)

您是否尝试过重建Web服务项目并刷新Web项目中的Web引用(Web服务代理)?

答案 1 :(得分:0)

这可能是事实上很长时间才有用,但参数必须命名为 prefixText 而不是 prefixTest ,就像你在这里一样。