C# 文本框上的AutoCompleteXtender返回HTML页面

C# 文本框上的AutoCompleteXtender返回HTML页面,c#,asp.net,ajaxcontroltoolkit,autocompleteextender,C#,Asp.net,Ajaxcontroltoolkit,Autocompleteextender,我正在尝试使用Ajax控制工具包AutoCompleteXtender实现搜索文本框。结果应该是与输入的文本匹配的名称列表,但是显示的是页面源HTML,一个字符接一个字符,创建一个非常长的单个字母列表 我已经找到并尝试了几个样品,但无法使其发挥作用。我确信数据库连接是有效的,直接在MSSMS中执行SQL查询时,会返回预期结果。AjaxControlToolkit已安装并在解决方案的其他页面上工作 此问题在(“”)之前被问及。然而,出于简单性和可维护性的原因,我不想像这张海报那样实现Web服务 a

我正在尝试使用Ajax控制工具包AutoCompleteXtender实现搜索文本框。结果应该是与输入的文本匹配的名称列表,但是显示的是页面源HTML,一个字符接一个字符,创建一个非常长的单个字母列表

我已经找到并尝试了几个样品,但无法使其发挥作用。我确信数据库连接是有效的,直接在MSSMS中执行SQL查询时,会返回预期结果。AjaxControlToolkit已安装并在解决方案的其他页面上工作

此问题在(“”)之前被问及。然而,出于简单性和可维护性的原因,我不想像这张海报那样实现Web服务

acex.aspx


AutoCompleteXtender-姓氏
acex.aspx.cs

使用System.Collections.Generic;
使用系统配置;
使用系统数据;
使用System.Data.SqlClient;
名称空间MCA
{
公共部分类acex:System.Web.UI.Page
{
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
公共静态列表GetLastNames(字符串前缀)
{
SqlConnection conn=新的SqlConnection(ConfigurationManager.ConnectionString[“DefaultConnection”].ToString());
SqlCommand cmd=new SqlCommand(“从[Entity_Person]中选择[Last_Name],其中[Last_Name]类似于@Name+'%',conn”);
cmd.Parameters.AddWithValue(“@Name”,prefixText);
SqlDataAdapter da=新的SqlDataAdapter(cmd);
DataTable dt=新的DataTable();
conn.Open();
da.填充(dt);
List LastNames=新列表();
对于(int i=0;i

}

使用浏览器访问页面时,如
acex.aspx/GetLastNames?prefixText=abc
,您是否看到所需的响应?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>AutoCompleteExtender - Last Names</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <asp:TextBox ID="txbxLastName" runat="server"></asp:TextBox>
            <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
                TargetControlID="txbxLastName"
                MinimumPrefixLength="2" 
                EnableCaching="true" 
                CompletionSetCount="1" 
                CompletionInterval="1000" 
                ServiceMethod="GetLastNames">
            </asp:AutoCompleteExtender>
        </div>
    </form>
</body>
</html>
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace MCA
{
    public partial class acex : System.Web.UI.Page
    {
        [System.Web.Script.Services.ScriptMethod()]
        [System.Web.Services.WebMethod]
        public static List<string> GetLastNames(string prefixText)
        {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString());
        SqlCommand cmd = new SqlCommand("SELECT [Last_Name] FROM [Entity_Person] WHERE [Last_Name] LIKE @Name+'%'", conn);
        cmd.Parameters.AddWithValue("@Name", prefixText);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        conn.Open();
        da.Fill(dt);
        List<string> LastNames = new List<string>();
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            LastNames.Add(dt.Rows[i][0].ToString());
        }
        return LastNames;
    }
}