Автозаполнение AJAX не работает - PullRequest
2 голосов
/ 21 декабря 2011

Я использую AutoCompleteExtender от AjaxControlToolkit на TextBox.

Проще говоря, когда я перетаскиваю инструмент AutoCompleteExtender на свой TextBox и затем нажимаю «Добавить метод автозаполнения страницы», я получаю следующую ошибку:

Невозможно создать метод страницы "GetCompletionlist, потому что нет CodeBehind или CodeFile был найден!

После поиска ошибки я в основном создал свой собственный веб-сервис AutoCompelte.asmx. Ниже приведен код для этого класса:

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

namespace AutoCompleteTest
{
    /// <summary>
    /// Summary description for AutoComplete
    /// </summary>
    [WebService(Namespace = "http://microsoft.com/webservices/")]
    [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 AutoComplete : System.Web.Services.WebService
    {
        [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
        public static string[] GetCompletionList(string prefixText, int count, string contextKey)
        {
            // Create array of movies  
            string[] movies = { "Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II" };

            // Return matching movies  
            return (from m in movies where m.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) select m).Take(count).ToArray();
        }  
    }
}

Конечно, вышеприведенные фиктивные данные .... Позже я буду получать данные из базы данных.

И мой Default.aspx выглядит так:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager>
    From
<asp:TextBox ID="txtFrom" runat="server">
</asp:TextBox>  


<asp:AutoCompleteExtender runat="server" 
    ID="txtFrom_AutoCompleteExtender" 
    TargetControlID="txtFrom"
    ServiceMethod="GetCompletionList"
    ServicePath="AutoComplete.asmx"
    MinimumPrefixLength="2" 
    CompletionInterval="1000"
    EnableCaching="true"
    CompletionSetCount="20"
    DelimiterCharacters=";, :"
    ShowOnlyCurrentWordInCompletionListItem="true">
</asp:AutoCompleteExtender>

Когда я запускаю сайт .... и набираю текстовое поле, ничего не происходит. Расширитель не отображается. Даже если я наберу "Звезда".

Что мне не хватает и почему я получаю эту ошибку в начале?

P.S. Я нахожусь на своих университетских компьютерах, поэтому, я думаю, что ошибка может быть связана с типом сети, которую я использую. не уверен.

Любая помощь очень высоко ценится высоко

Спасибо.

1 Ответ

0 голосов
/ 29 декабря 2011

Я получил это работает. Вот как я это исправил:

Мой проект был «Приложение веб-сайта» в Visual Studio. Когда я просто сделал проект «Веб-сайт», все работало отлично ... Я не знаю почему, он просто сделал.

Поэтому, если у кого-то еще возникла такая же проблема, попробуйте перенести код на проект «Веб-сайт», а не на проект «Приложение веб-сайта».

Надеюсь, это поможет.

...