我正在尝试让AjaxControlToolkit (ACT)自动完成扩展程序工作。它曾短暂地工作过,但现在停止工作了,我不知道为什么。我没有改变我的项目中任何我认为会影响到这一点的东西。
我甚至创建了一个全新的VS2013项目,并试图实现它,但仍然没有什么乐趣。
我看到了几个对"ajaxToolkit:ToolkitScriptManager“的引用,但我在任何地方都找不到它的引用。我已经尝试通过下载和通过NUGET安装该工具包,但它根本不起作用。
我已经尝试了这里的每个例子,至少20个或更多,但仍然不快乐。如果你有它的工作,请张贴你的代码,因为我的不工作,它没有意义的张贴,因为我已经尝试了这里建议的一切
任何帮助都会非常感谢,因为我真的不想设计一些不雅的东西来绕过这个问题。
感谢loads
从操作15.1中删除了更新ToolkitScriptManager。1请参阅here,以便回答此问题,但自动完成功能仍然不起作用
更新
下面是我使用togetgher的一个例子,不管有没有[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]指令,它都不能工作
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestWebSite.WebForm1" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ServiceMethod="GetCompletionList"
MinimumPrefixLength="1"
CompletionInterval="100"
ID="AutoCompleteExtender1"
runat="server"
TargetControlID="TextBox1"></cc1:AutoCompleteExtender>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestWebSite
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
string[] s = {"a","b","c","d"};
return s;
}
}
}发布于 2015-08-10 17:00:00
您需要通过将以下行放在@PageDirective下面来注册AJAX Control Toolkit Library
这是ajaxtoolkit
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>然后这是调用ajaxtoolkit的示例
<cc1:toolkitYouWantToUse/>这就是它
发布于 2015-08-10 18:34:37
好的,我已经让它工作了。我在VS2013中创建了一个全新的测试项目。我使用Google Chrome的开发人员功能进行调试,发现不断收到500个错误。在我的经验中,这通常是由于我的网址错误而导致的,因此我需要检查web服务是否正常工作。(请参阅下面的内容)
在修复了这个问题并知道web服务是正常的之后,我进行了一些尝试和错误,下面的步骤解决了问题。现在,我使用同样的方法让AutoCompleteExtender在我的所有项目中工作。
(这可能不是做这件事的方法,但我知道它对我很有效)
文件到您的项目中,定义如下所示的.asmx。实际上你可以调用这个方法,任何你喜欢的名字,概要文件(例如,参数和返回类型)必须保持不变。可能还有其他变体,但我不知道它们是什么。我只知道这个配置对我有效。
添加@Register指令
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ServiceMethod="GetCompletionList"
ServicePath="WebService1.asmx"
MinimumPrefixLength="0"
CompletionInterval="100"
ID="AutoCompleteExtender1"
runat="server"
TargetControlID="TextBox1"></cc1:AutoCompleteExtender>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace TestWebSite
{
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[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 WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string[] GetCompletionList(string prefixText, int count)//, string contextKey)
{
string[] s = { "a", "b", "c", "d" };
return s;
}
}
}
//List<string> works just as well as string[]

https://stackoverflow.com/questions/31915382
复制相似问题