Ajax AutoCompleteExtender - 为什么这段代码不起作用?

时间:2012-03-19 15:02:49

标签: c# javascript asp.net .net ajax

使用aspnet 3.5。这是我的代码。是的我知道我应该使用jquery。

当我在文本框中输入内容时没有任何反应。我在网络服务中有一个没有被击中的断点。

我做错了什么?

 <asp:TextBox ID="tbName" runat="server"  ></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
  TargetControlID="tbName"  
    ServiceMethod="GetList" ServicePath="wsWebServices.asmx" 
    MinimumPrefixLength="2">
</cc1:AutoCompleteExtender>

[WebMethod]
[ScriptMethod]
public string[] GetList(string prefix, int count)
{
     return new string[] { "abc", "def", "hij", "abc", "def", "hij", "abc", "def", "hij", "abc", "def", "hij" };
}

4 个答案:

答案 0 :(得分:2)

尝试将WebMethod和ScriptMethod中的引用更改为完全限定名称:

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]

在你的参数更改前缀为prefixText(返回类型和参数名称和类型必须完全匹配,包括大小写)

public string[] GetCompletionList(string prefixText, int count)

确保您的脚本管理器在您的页面上。

答案 1 :(得分:0)

define your web method as static like
public static string[] GetList(string prefix, int count) 

答案 2 :(得分:0)

试试这个

ASPX

<asp:TextBox ID="tbName" runat="server"  autocomplete="off"  ></asp:TextBox>

<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
    TargetControlID="tbName"  
    ServiceMethod="GetList" 
    ServicePath="wsWebServices.asmx" 
    MinimumPrefixLength="2">
</cc1:AutoCompleteExtender>

在服务中 检查你的asmx路径 班级以上     [System.Web.Script.Services.ScriptService]     public class wsWebServices:System.Web.Services.WebService     {

  [WebMethod]
  public string[] GetList(string prefix, int count)
  {


return new string[] { "abc", "def", "hij", "abc", "def", "hij", "abc", "def", "hij", "abc", "def", "hij" };
  }
}

答案 3 :(得分:0)

我尝试从javascript函数调用webservice,这很有用。所以问题是以某种方式自动完成没有获得web服务的“结果”。

此页面上的所有其他答案都不适用或不起作用。

我认为ajax文档中缺少某些内容。如果我得到这个工作,我会在这里写下来。