AjaxAutoComplete не работает после перехода на C#

Мое автозаполнение отлично работает при использовании моего старого сайта, но не работает, когда я портировал на C# и Entity Framework. Приведенный ниже HTML является частью пользовательского элемента управления. Я поставил точки останова в коде веб-сервиса, и даже не похоже, что его вызывают. Я не знаю, где еще проверить, где перерыв. Любая помощь будет оценена. Благодарю.

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
                         <asp:TextBox ID="TextBoxDamName" runat="server" Columns="50"></asp:TextBox>
                    <asp:AutoCompleteExtender ID="TextBoxDamName_AutoCompleteExtender"
                        runat="server"
                        DelimiterCharacters="" 
                        Enabled="True" 
                        ServicePath="DamSafetyAutoComplete.asmx"
                        ServiceMethod="SelectDamNames" 
                        FirstRowSelected="True" 
                        MinimumPrefixLength="1" 
                        CompletionInterval="200"
                        TargetControlID="TextBoxDamName">
                    </asp:AutoCompleteExtender></td>

namespace ExternalDamSafetySearch
{
    /// <summary>
    /// Summary description for DamSafetyAutoComplete
    /// </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 DamSafetyAutoComplete : System.Web.Services.WebService
    {
        [WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string[] SelectDamNames(string prefixText, Int32 count)
        {
            try
            {
                EnterprisePubEntities EE = new EnterprisePubEntities();

                return EE.DamSafetyDatas
                    .Take(count)
                    .Where(c => c.DamName.StartsWith(prefixText))
                    .Distinct()
                    .OrderBy(c => c.DamName)
                    .Select(c => c.DamName)
                    .ToArray();
            }
            catch (Exception) { throw; }
        }
    }
}

1 ответ

Решение

Оказывается, я не направлял элемент управления в правильное местоположение для моего файла Webservice. Как только я исправил это, я все еще не получал результаты, даже при том, что я нажимал на метод в веб-сервисе. Оказывается, я не вернул результаты правильно. Я исправил это, повернув это

            return EE.DamSafetyDatas
                .Take(count)
                .Where(c => c.DamName.StartsWith(prefixText))
                .Distinct()
                .OrderBy(c => c.DamName)
                .Select(c => c.DamName)
                .ToArray();

в

            return EE.DamSafetyDatas
                 .Where(c => c.DamName.StartsWith(prefixText))
                .Distinct().Take(count)
                .OrderBy(c => c.DamName)
                .Select(c => c.DamName)
                .ToList.ToArray();

Мне также пришлось изменить местоположение. Take(количество), потому что это займет первое (количество = 10) из списка, а затем отфильтровать их, начиная с.

Другие вопросы по тегам