ajaxToolkit:找不到ToolkitScriptManager

时间:2015-08-10 08:55:19

标签: c# asp.net visual-studio-2013 ajaxcontroltoolkit

我正在努力让AjaxControlToolkit(ACT)自动完成扩展器工作。 它工作得很短暂,但现在已停止工作,我无法弄清楚原因。我没有改变我的项目中的任何改变,我可以看到会影响这一点。

我甚至创建了一个全新的VS2013项目并试图实现这一点,但仍然没有乐趣。

我看到几个对“ajaxToolkit:ToolkitScriptManager”的引用,但我无法在任何地方找到它的引用。我已尝试从下载以及通过NUGET安装工具包,但它根本无法工作。

我已经尝试过这里的每个例子,其中至少有20个或更多,但仍然没有快乐。如果你有它工作,请发布你的代码,因为我的工作不起作用,它的无意义发布是因为我已经尝试了所有建议在这里

任何帮助都会非常感激,因为我真的不想设计一些不优雅的东西来解决这个问题。

感谢加载

[UPDATE] ToolkitScriptManager已从ACT 15.1中移除,请参阅here以便回答此问题,但自动完成仍无法正常工作

[UPDATE]

这是我放置的一个例子,无论有没有[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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您需要通过在@PageDirective

下面放置以下行来注册AJAX Control Toolkit库

这是ajaxtoolkit

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

然后这是调用ajaxtoolkit

的示例
<cc1:toolkitYouWantToUse/>

感谢它

答案 1 :(得分:0)

好的,我有它的工作。我在VS2013中创建了一个全新的测试项目。我使用谷歌浏览器的开发人员功能进行调试,发现我经常遇到500错误。根据我的经验,我通常会因为我的网址错误而导致这种情况,这导致我检查网络服务是否正常工作。 (见下文)

在解决了这个问题并且知道Web服务正常后,我进行了一些试验和错误,下面的步骤解决了这个问题。我现在使用相同的方法在我的所有项目中使用AutoCompleteExtender。

(这可能不是这样做但我知道它对我有用)

  1. 删除nuget安装的AjaxControlToolkit(ACT)版本
  2. 手动添加我已下载的ACT dll的引用,从here获取最新版本。
  3. 使用如下定义的WebMethod将.asmx文件添加到项目中。您实际上可以调用方法任何您喜欢的配置文件名称(例如参数和返回类型)必须保持不变。可能还有其他变化,但我不知道它们是什么。我只知道这个配置对我有用。

  4. 重新添加AutoCompleteControl。 VS IDE将为您添加@Register指令

  5. <%@ 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[]
    
    1. 运行项目,手动导航到.asmx页面并确保该函数返回您期望的结果。 VS知道你在调试中运行,所以你可以添加参数并调用web方法。 enter image description here
    2. enter image description here