2011-04-22 5 views
2

나는 ajax를 사용하는 자동 완성의 아주 간단한 예를 따랐으므로 제대로 작동하지 않습니다. 나는 코드를 밟았고 결코 내 webmethod에 가지 않는 것처럼 보입니다. 그 밖의 무엇을 확인할 것인가?WebMethod가 호출되지 않습니다. ASP.NET C#

에서 .aspx

<asp:ScriptManager ID="ScriptManager1" runat="server"> 

    </asp:ScriptManager> 

<asp:TextBox ID="txtFrom" runat="server"> 
</asp:TextBox> 
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtFrom" MinimumPrefixLength="1" ServiceMethod="GetSuggestions"> 
</ajaxToolkit:AutoCompleteExtender> 

.aspx.cs

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public static string[] GetSuggestions(string prefixText, int count, string contextKey) 
{ 
    string[] members = { "Nick", "John", "Bob" }; 

    return (from m in members where m.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) select m).Take(count).ToArray(); 
} 
내가 사용하는 대신 클래스에 직접 내 방법을 넣어하는 웹 서비스를 생성

하지만이 같은 결과를 얻을 수 .

+0

웹 메서드가 정적입니까? 페이지 내에 있다면 정적 일 수 있습니다. –

답변

2
public static string[] GetSuggestions(string prefixText, int count, string contxtKey) 

당신은 (입력 이름, 반환 형식 매개 변수) contxtKey 대신 contextKey

기억, 서명을 썼다 has to match exactly을. 당신이 " 을 대체 할 수

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public string[] GetCompletionList(
    string prefixText, int count, string contextKey) { ... } 

참고 : 컨텍스트 키를 사용하는 경우

, 그것은 유형 문자열의 contextKey 라는 추가 매개 변수와 동일한 서명이 있어야합니다 GetCompletionList "이름을 으로 선택하지만 반환 유형 및 매개 변수 이름 및 유형이 정확히 일치해야합니다. 케이스를 제외하고.

+0

좋아요, contextKey로 바꿨지 만 여전히/work이라고 부르지 않습니다. 적어도 단계를 밟을 때 방법으로 점프해야하지 않습니까? – John

+0

좋아, 난 그냥 전체 문자열 contextKey를 제거하고 지금은 작동합니다. 감사합니다 – John

+0

"UseContextKey"및 "ContextKey"특성을 AutoCompleteExtender 컨트롤에 추가하면 "string contextKey"를 포함한 함수가 작동합니다. – Larry

1

이 (AN이 .asmx에) 오히려 서비스 호출보다 당신의 스크립트 관리자가 페이지 방법을 허용하도록 구성되어 있는지,하지만 "GetSuggestions는"(AN .aspx.cs에) 페이지 방법임을 표시되지 않습니다 .

처럼 보이도록 스크립트 관리자를 편집하십시오 :

<asp:ScriptManager 
ID=”scriptManager” 
EnablePageMethods=”true” 
runat=”server” > 

당신이 다음 AutoCompleteExtender이 같은이 .asmx 파일을 참조하도록 수정해야이 .asmx에 메서드 호출을 이동하려면 :

<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtFrom" MinimumPrefixLength="1" ServiceMethod="GetSuggestions" ServicePath="AutoCompleteService.asmx"> 
        </ajaxToolkit:AutoCompleteExtender> 

두 가지 기술을 섞어 보았을 때 조금 벗어났습니다.

관련 문제