C# 扯掉我的头发-ASP.NETAJAX自动完成不工作

C# 扯掉我的头发-ASP.NETAJAX自动完成不工作,c#,asp.net-ajax,autocomplete,C#,Asp.net Ajax,Autocomplete,希望有人能帮上忙。我上下浏览了网站,在这个网站上寻找答案,但仍然无法让AutoCompleteAjax控件正常工作。我已经从试图把它包含在一个现有的网站上,剥离到一个非常基本的形式,但它仍然不能正常工作。我使用页面方法比使用本地Web服务更幸运,所以下面是我的代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="droptest.aspx.cs" Inherits="droptest" %> <%@ Registe

希望有人能帮上忙。我上下浏览了网站,在这个网站上寻找答案,但仍然无法让AutoCompleteAjax控件正常工作。我已经从试图把它包含在一个现有的网站上,剥离到一个非常基本的形式,但它仍然不能正常工作。我使用页面方法比使用本地Web服务更幸运,所以下面是我的代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="droptest.aspx.cs" Inherits="droptest" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>  
    <form id="form1" runat="server">    
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server">
        </asp:ScriptManager>
        <cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            MinimumPrefixLength="1" ServiceMethod="getResults" 
            TargetControlID="TextBox1">
        </cc1:AutoCompleteExtender>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Services;
using System.Web.Services;

public partial class droptest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    public string[] getResults(string prefixText, int count)
    {
        string[] test = new string[5] { "One", "Two", "Three", "Four", "Five" };
        return test;
    }
}

使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.Web.Script.Services;
使用System.Web.Services;
公共部分类droptest:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
[网络方法]
公共字符串[]getResults(字符串前缀文本,整数计数)
{
string[]test=新字符串[5]{“一”、“二”、“三”、“四”、“五”};
回归试验;
}
}
尽量使事情尽可能简单,但我得到的只是带有页面源代码的自动完成下拉列表(从


确保包含ScriptMethod属性。

使方法
为静态的

[WebMethod]
public static string[] getResults(string prefixText, int count)
{
        string[] test = new string[5] { "One", "Two", "Three", "Four", "Five" };
        return test;
}
更新:
在黑暗中拍摄…尝试将
ScriptManager
移动到文本框上方。此外,我会将
ServicePath
设置为“
~/
”因为您提到了URL重写。

请尝试将ServicePath添加到cc1:AutoCompleteXtender中,并使用web服务的路径。

我认为,您还需要将页面名称作为ServicePath

    <cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            MinimumPrefixLength="1" ServiceMethod="getResults" ServicePath="droptest.aspx" 
            TargetControlID="TextBox1">
    </cc1:AutoCompleteExtender>


好的,我从这些建议中添加的东西已经起作用了!!!但是仍然有一个问题,它在一个独立的项目中工作,但是将它添加到现有的项目中,它就不再工作了。因此,感谢到目前为止的帮助,我有一个工作示例,现在只需要找出是什么在另一个项目中扼杀了它。

如果您使用的是IIS 5.1,请尝试从应用程序设置中临时删除。*。此通配符设置会阻止类似AJAX的控件正常工作。

在我的情况下,我的项目使用重写规则删除扩展aspx。我想问题在于。我在web.config中注释重写规则。然后清除解决方案。重新生成它。清除所有内容firefox/chrome中的tory(您使用的内容)。然后按Ctrl+F5或F5。自动完成正确显示。

也尝试过了-仍然只是在结果中一个字母一个字母地获取Doctype和其余的源代码…我在网站上的其他地方有ajax UpdatePanel,所以我知道这是可以的,只是Toolkitty在
WebMethod中设置了一个断点,看看我是否t出错当我尝试本地Web服务而不是PageMethods时,我也无法让它们启动,甚至使用Invoke按钮测试.asmx时,浏览器也挂起了-这可能是权限或其他方面的更大问题吗?这是使用PageMethods,所以我认为您必须排除ServicePath,这仅适用于Web服务-尝试过但仍然遇到问题我也使用页面方法,需要服务路径。您是否同时定义了服务路径、静态方法和ScriptMethod属性?autocomplete控件非常特殊。这是使用页面方法,所以我认为您必须排除服务路径,而at仅适用于Web服务-尝试了它,但仍然遇到了问题我已经缩小了范围-是上下文。在Global.asax中重写导致了问题。现在的问题是我如何解决这个问题…我在Global.asax中添加了一些代码,它只在文件扩展名不是.axd的情况下重写url。因此,如果它有.aspx或其他文件扩展名,accor根据重写规则,它会被检查和重写,如果不是的话,它会被忽略。无论如何,感谢所有人的帮助。。。
    <cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            MinimumPrefixLength="1" ServiceMethod="getResults" ServicePath="droptest.aspx" 
            TargetControlID="TextBox1">
    </cc1:AutoCompleteExtender>