2015-11-05 5 views
0

ВключитеAutoCompleteExtender не вызывая ServiceMethod

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

Мой код ASPX

<asp:TextBox ID="txtSearchKey" runat="server" Width="200" AutoPostBack="true" OnTextChanged="txtSearchKey_TextChanged" /> 
<asp:TextBoxWatermarkExtender ID="weSearchKey" runat="server" Enabled="True" TargetControlID="txtSearchKey" WatermarkText="Enter search criteria" WatermarkCssClass="watermark" /> 
<asp:AutoCompleteExtender ServiceMethod="SearchOnboardingMembers" MinimumPrefixLength="3" CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" TargetControlID="txtSearchKey" ID="onboardingSearchExtender" runat="server" FirstRowSelected="false" OnClientItemSelected="GetSelectedId" CompletionListCssClass="completionList" CompletionListItemCssClass="listItem"        CompletionListHighlightedItemCssClass="itemHighlighted" CompletionListElementID="divCompletionListElement" /> 

Мой бэкенд код

[ScriptMethod()] 
[WebMethod] 
public static List<string> SearchOnboardingMembers(string prefixText, int count) 
    { 
     var filteredSearchText = String.Join(",", prefixText.Split(' ').Where(x => x.Length > 2)); 

     //my code 

     return items; 
    } 

Этот код работает отлично на странице, и я нуждался в ту же функцию на другой странице. Я просто скопировал код HTML и Backend в новый ASPX-файл. Но, как ни странно, он не работает на этой странице. Когда я имею в виду, что не работает, WebMethod не запускается на этой странице. Есть ли у нас какой-нибудь способ отладить эту проблему? Я не вижу никаких ошибок или предупреждений нигде, когда я ввожу текст в текстовое поле, но не вызывает WebMethod. Спасибо за любые предложения

+0

Вы пытались вызвать свой метод обслуживания непосредственно в браузере? Что-то вроде 'MyPage.aspx/SearchOnboardingMembers'. Или поместите его в отдельный файл .asmx и попробуйте открыть 'MyService.asmx', проверить его методы, вызвать его в браузере, а затем проверить вкладку отладки в браузере браузера, чтобы убедиться, что вы вызываете его правильным путем. –

ответ

0

Я не знаю, почему, но вот решение, которое я получил.

Как-то ASP.NET не вызывает тот же WebMethod с другой страницы. Сначала я копировал/вставлял метод Web с одной страницы на другую страницу; функция второй страницы никогда не вызывалась в пользовательском интерфейсе, как указано в моей проблеме здесь.

Я перевел этот WebMethod на базовый класс страницы, и он работал на обеих страницах! Это может быть одно и то же имя, используемое в коде обеих страниц, оно не срабатывало раньше.

Смежные вопросы