2012-03-23 91 views
1

我试图使用自动完成,如果我调用一个函数没有在Web服务的参数,它工作正常:使用WebMethod的ASP.NET AJAX自动完成?

<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> 
+0

你是怎么称呼这些功能的? – Shrieks 2012-03-23 17:51:50

+0

user1202606 2012-03-23 18:09:18

回答

0

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

+0

我有ASMX文件在项目中,我可以调用Web服务中的函数,只要它们没有参数。我甚至尝试从头开始创建一个默认页面和Web服务,同样的事情,但后来我尝试使用C#,它的工作原理。所以,只有当我使用vb它会给我一个问题,但是我的项目中有太多的代码在app_code文件夹中将其全部切换到c#,并且它们不会让我在他们混合的文件中,因为它们被编译在一起。 – user1202606 2012-03-23 18:05:16

0

这可能是太久之后的事实是有用的,但参数必须命名为prefixText而不是prefixTest为你在这里。