2015-11-05 61 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和後端代碼複製到新的ASPX文件中。但是,奇怪的是它不能在那個頁面上工作。當我的意思是不工作時,WebMethod不會在此頁面上調用。我們有什麼方法可以在這裏調試問題嗎?當我輸入文本框但沒有調用WebMethod時,我沒有看到任何錯誤或警告。感謝您的任何建議

+0

您是否嘗試在瀏覽器中直接調用您的服務方法?類似於「MyPage.aspx/SearchOnboardingMembers」。 或者將它放在一個單獨的.asmx文件中,並嘗試打開'MyService.asmx',檢查它的方法,在瀏覽器中調用它,然後檢查瀏覽器調試網絡選項卡以確保您使用正確的路徑調用它。 –

回答

0

我不知道爲什麼,但這裏是我得到的解決方案。

不知何故,ASP.NET不會從不同的頁面調用相同的WebMethod。最初我將Web方法從一個頁面複製/粘貼到另一個頁面的代碼後面;第二頁功能從未在UI上調用,如我在這裏的問題所述。

我把這個WebMethod移動到了一個基頁類,它在兩頁都有效!它可能與後面兩個頁面代碼中使用的名稱相同,但它並沒有提前工作。