【问题标题】:AjaxToolKit AutoComplete Extender is Just Not WorkingAjaxToolKit 自动完成扩展器只是不工作
【发布时间】:2012-12-22 02:38:50
【问题描述】:

所以我现在花了 4 天时间研究和尝试在 StackOverflow 和其他网站上可以找到的所有内容。而且我只是无法让我的 Ajax AutoCompleteExtender 工作。我正在为 .NET 4.5 使用 VS 2012 和 ASP.NET 和 C# 构建 这是我的代码:

~/Dashboard/Default.aspx

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

   <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolKit" %>

   <ajaxToolKit:ToolkitScriptManager ID="ScriptManager1" runat="server">
       <Services>
           <asp:ServiceReference Path="~/Dashboard/AutoComplete2.asmx" />
       </Services>
   </ajaxToolKit:ToolkitScriptManager>


   <asp:TextBox ID="CarMake_TextBox" runat="server"></asp:TextBox>

   <ajaxToolKit:AutoCompleteExtender 
       ID="CarMake_AutoCompleteExtender" runat="server"
       Enabled="true"
       ServicePath="AutoComplete2.asmx"
       ServiceMethod="GetCarMakeList"
       TargetControlID="CarMake_TextBox"
       MinimumPrefixLength="1" FirstRowSelected="True"
       >
   </ajaxToolKit:AutoCompleteExtender>

</asp:Content>

~/Dashboard/AutoComplete2.asmx.cs (C#)

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace CDC.Dashboard
{
    /// <summary>
    /// Summary description for AutoComplete2
    /// </summary>
    [WebService(Namespace = "http://websiteleaders.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
    [System.Web.Script.Services.ScriptService]
    public class AutoComplete2 : System.Web.Services.WebService
    {
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string[] GetCarMakeList(string prefixText, int count)
        {
            string sql = "Select DISTINCT Make from Car_Makes_Models Where Make LIKE @prefixText";
            SqlDataAdapter da = new SqlDataAdapter(sql, "Data Source=localhost\\SQLEXPRESS;Initial Catalog=CDC;Integrated Security=True");
            da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
            DataTable dt = new DataTable();
            da.Fill(dt);
            string[] items = new string[dt.Rows.Count];
            int i = 0;
            foreach (DataRow dr in dt.Rows)
            {
                items.SetValue(dr["Make"].ToString(), i);
                i++;
            }
            return items;
        }
    }
}

我这辈子都无法让它发挥作用。当我尝试通过 Web 浏览器运行 Web 服务并输入值时,它会正确检索所需的信息并将它们作为字符串数组返回。但似乎 AutoCompleteExtender 只是没有触发。

值得注意的是,我第一次尝试时,它成功了。然后在任何后续尝试之后它没有。我傻眼了。如果我用 IE 运行它,我会收到关于使用 AJAX ScriptManager(我已经在使用)和 4.0 脚本的错误消息。我正确安装并引用了 AJAX 工具包,是的,它确实支持 .NET v4.5,这是我的目标框架。

【问题讨论】:

  • 您是否尝试过从 firebug 的网络控制台检查 ajax 日志或者可能是 fiddler ? (所以您可能知道问题出在后台进程或客户端 js 中,否则......)
  • @Harsh 我同时使用了 Fiddler 和 Firebug,从控制台我得到 2 个错误:Error: AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.TypeError: Sys.Extended is undefined 正如你所看到的,我正在使用 AJAX ToolKitScriptManager。我已经正确引用了它。

标签: c# asp.net ajax autocomplete autocompleteextender


【解决方案1】:

使用 AjaxControlToolkit 版本 4.1.60919 它会正常工作

【讨论】:

    【解决方案2】:

    尝试使用下面的代码 sn-p,使用 ScriptManager 而不是 ToolkitScriptManager

    <asp:ScriptManager ID="ScriptManager1" runat="server">
                <Scripts>
                    <asp:ScriptReference Name="AjaxControlToolkit.Common.Common.js" Assembly="AjaxControlToolkit" />
                    <asp:ScriptReference Name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" Assembly="AjaxControlToolkit" />
                </Scripts>
    </asp:ScriptManager>
    

    参考asp.net forum

    还要检查AjaxControlToolkit.dll的版本,它应该是3.5或更高而不是1.0

    检查我对 AjaxControlToolkit.CommonToolkitScripts error 的回答,它解决了其他用户在不同 .NET 框架场景中遇到类似问题的问题。

    【讨论】:

    • 我试过了,并按照您的链接和您提供给其他用户的信息。感谢您的帮助,但它不起作用。我得到了其他用户在您引用的文章中遇到的相同错误。你指示他是 3.5 脚本。好吧,我正在使用 4.5,但我似乎无法解决它。我研究了试图找到这些脚本的 4.5 替代品,但我仍然无法弄清楚。如果你能再帮助我,那就太好了。
    • 我在收到错误页面时注意到了一些事情。在底部显示这条消息:Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18010 难道是 IIS 在 4.0 下运行它?虽然我检查了 IIS 应用程序池,它列出了 v4.5,但 .NET 框架版本为 v4.0 表示版本 v4.0.30319 尝试更改最终让我感到沮丧,因为它似乎无法更改,并且在某些帖子中我发现它说没问题,应该是这样。
    • 只是我的一个想法。看看你花在“ACT 自动完成”上的时间,你为什么不试试 jquery 自动完成一次。我相信任何可行的方法对你和你的上司都有好处,而且 jquery 是比 'ACT' 更丰富的库:D
    • 你知道我会怎样。在这不起作用并且那也不起作用之后,我确实尝试过一次。但也许我没有像 ACT 那样给它足够的时间或精力。我会试试,让你知道谢谢
    【解决方案3】:

    您是否尝试将 bin 文件夹中的 ajaxcontroltoolkit.dll 替换为最新版本?我发现有时 VS 有时会用参考副本覆盖 dll。

    【讨论】:

    • 是的,我已经尝试过了。手动下载 zip 文件并替换它。我还尝试从 NuGet 和控制台重新安装 AjaxToolkit,甚至安装以前的版本 4.1.60623(当前:4.1.60919)仍然收到我评论中提到的错误。
    • 啊啊..这边也有同样的问题!!好郁闷
    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 2013-11-06
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多