2013-04-05 2 views
1

내 기존 사이트를 사용할 때 자동 완성 기능이 제대로 작동하지만 C# 및 Entity Framework로 이식 할 때 작동하지 않습니다. 아래 HTML은 사용자 정의 컨트롤의 일부입니다. 나는 webservice 코드에 중단 점을 넣었고 호출되는 것조차 보이지 않는다. 나는 휴식이 어디 있는지 확인해야 할 곳이 어디인지 알지 못합니다. 어떤 도움을 주시면 감사하겠습니다. 감사.C#으로 마이그레이션 한 후 AjaxAutoComplete가 작동하지 않습니다.

<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; } 
     } 
    } 
} 
+0

대부분의 브라우저에서 네트워크 요청을 볼 수 있습니다. 예를 들어, 크롬에서는'CTRL + SHIFT + J'를 눌러 콘솔을 불러올 수 있습니다. 그런 다음 네트워크 탭을 클릭하십시오. 입력 할 때 자동 완성 서비스에 대한 아웃 바운드 요청이 있는지 확인하십시오. – Yuck

+0

완벽. 고맙습니다. 피들러를 잊어서 사용했기 때문에 전화가 걸려 왔지만 잘못된 위치에 있음을 알 수있었습니다. 이 문제가 해결되어 이제 서비스가 시작되었지만 결과가 반환되지 않습니다. 결과를 배열로 변환하는 방법에 대해 기꺼이 내기를 원합니다. 그래서, 다음 호에. 빠른 답장을 보내 주셔서 다시 한번 감사드립니다. – Tyddlywink

+1

올바르게 반환하지 않았습니다. 내 ToArray 라인을 변경하여 damNames.ToList()를 반환했습니다. ToArray(); 모든 것이 잘됩니다. – Tyddlywink

답변

1

내가 내 Webservice를 파일에 대한 올바른 locatioin로 제어를 지시하지 않은 것으로 밝혀졌습니다. 일단 내가 웹 서비스에서 메소드를 치고 있었다고해도 여전히 결과를 얻지 못했다고 수정했다. 나가 결과를 정확하게 돌려 보내지 않았다는 것을 밝힌다. I는 다음 목록에서 I는 또한 제 걸릴 것이기 때문에 .Take (COUNT)의 위치를 ​​변경해야만

  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(); 

이것은 (= 10 카운트)으로 돌려 고정 그것들을 시작으로 필터링하십시오.

관련 문제