Расширитель автозаполнения не заполнен - PullRequest
2 голосов
/ 12 сентября 2011

Я пытаюсь использовать Ajax Auto Complete Extender со службой WCF, размещенной в веб-проекте.Служба достигнута, и я проверил, что результаты возвращаются с помощью fiddler, однако текстовое поле, связанное с автоматическим заполнителем, никогда не заполняется.

Сервисный контракт выглядит следующим образом:

[ScriptService]
[ServiceContract(Namespace = "")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public interface ICertificateService
{
    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    [WebInvoke(Method = "POST",
        BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json)]
    List<string> GetCompletionList(string prefixText, int count);
}

Реализация просто возвращает заполненный список строк.

aspx выглядит следующим образом:

<asp:TextBox runat="server" ID="aceInstructors"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender runat="server" 
                                  ID="autoCompleteInstructor"
                                  TargetControlID="aceInstructors"
                                  ServiceMethod="GetCompletionList" 
                                  ServicePath="../../CertificateService" 
                                  MinimumPrefixLength="1"
                                  CompletionInterval="1000" 
                                  EnableCaching="true" CompletionSetCount="5">
                        <Animations>
                            <OnShow>  <HideAction Visible="true" /> </OnShow>
                            <OnHide> <HideAction Visible="false" /> </OnHide>       
                        </Animations>

Маршрут для службы настроен в Global.asax следующим образом:

private void RegisterRoutes()
    {
        RouteTable.Routes.Add(new ServiceRoute("CertificateService", new WebServiceHostFactory(), typeof(CertificateService)));
    }

Как уже было сказано, я могу разогреть службу и получить ответ в формате JSON, когдаЯ смотрю в скрипач.Ниже приведен необработанный ответ:

HTTP/1.1 200 OK
Server: Cassini/4.0.1.7
Date: Mon, 12 Sep 2011 16:44:16 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 68
Cache-Control: private
Content-Type: application/json; charset=utf-8
Connection: Close

{"GetCompletionListResult":["Alpha","Beta","Gamma","Delta","Omega"]}

Возможно, стоит отметить, что если я опускаю ResponseFormat из контракта на обслуживание, результат возвращается в формате XML, а текстовое поле заполняется очень длинным списком. не определено

Я что-то упустил?

1 Ответ

2 голосов
/ 13 сентября 2011

Проблема была решена здесь .Проблема, которую мне нужно было решить, казалось, вращалась вокруг способа, которым JSON упакован и возвращен.Похоже, что расширитель автозаполнения набора инструментов ajax ожидает, что содержимое JSON будет ' .d wrapped '.Это было достигнуто путем следования параметрам конфигурации в предоставленной ссылке.

Следует также отметить, что существует шаблон проекта WCF с поддержкой Ajax, который добавляет эти параметры web.config ... зная, что, вероятно, сохранитсянекоторое время.

...