У меня есть метод веб-сервиса, как показано ниже:

 <WebMethod()> _
    Public Function TravelMeansList(ByVal prefix As String) As List(Of HRM_travellingMeans)
        Dim ctx As New HRMEntities
        Dim query = From c In ctx.HRM_travellingMeans Where c.name.ToUpper.StartsWith(prefix) Select c

        If query.Count > 0 Then
            Return query.ToList()
        Else
            Return Nothing
        End If

    End Function

И мой сценарий, как показано ниже

<script type="text/javascript">
     $(document).ready(function () {

         $("#<%=travelmeansTextBox.ClientID %>").autocomplete({


             source: function (request, response) {
                 $.ajax({
                     url: '<%=ResolveUrl("../../services/ApplicationService.asmx/TravelMeansList") %>',
                     data: "{ 'prefix': '" + request.term + "'}",
                     dataType: "json",
                     type: "POST",
                     contentType: "application/json; charset=utf-8",
                     dataFilter: function (data) { return data; },
                     success: function (data) {
                         response($.map(data.d, function (item) {
                             return Json({

                                    value: item.name
                             })
                         }))
                     },
                     error: function (response) {
                         alert(response.responseText);
                     },
                     failure: function (response) {
                         alert(response.responseText);
                     }
                 });
             },
             select: function (e, i) {

             },
             minLength: 1
         });




     });
    </script>

Моя проблема в том, что всякий раз, когда я пытаюсь ввести любую букву в свое текстовое поле, я получаю эту ошибку

Обнаружена циклическая ссылка при сериализации объекта типа \ u0027System.Data.Metadata.Edm.AssociationType \ u0027. "," StackTrace ":" в System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal (Object o, StringBuilder sb, Глубина Int32, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue (Object o, StringBuilder sb, глубина Int32, Hashtable objectsInUse, Serialization currentMmbere, serializationfoormat n в System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject (Object o, StringBuilder sb, глубина Int32, Hashtable objectsInUse, SerializationFormat serializationFormat) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue, Object sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember) \ r \ n в System.Web.Script.Seri alization.JavaScriptSerializer.SerializeValue (Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable ......

Что я делаю не так.

0
Mark Adesina Omoniyi 3 Авг 2012 в 18:57
Моя структура класса: публичный идентификатор как Int32, публичное имя как строка
 – 
Mark Adesina Omoniyi
3 Авг 2012 в 19:05

1 ответ

Лучший ответ

Проблема может заключаться в сериализации JSON объекта Entity Framework. Обратитесь к этой статье:

http://mytechworld.officeacuity.com/index.php/2010/02/serializing-entity-framework-objects-into-json-using-asp-net-mvc/

Автор предлагает использовать объект JSONResult, если вы используете ASP.NET MVC, хотя я не уверен, насколько хорошо это будет работать с jQuery Autocomplete.

1
Martin-Brennan 4 Авг 2012 в 13:58