2013-10-07 113 views
1

在我当前的代码中,record不会回来作为我可以迭代的列表。相反,它通过System.Collections.Generic.List'1[ProjectName.BodyStyle]$.each功能。从ajax数据库调用填充下拉列表

我需要的是一个列表,我可以通过并从IDBodyStyle1填充下拉列表。这里是我的代码:

服务器端控制器:

Function Index(ByVal KovID As String) As List(Of BodyStyle) 
      Dim db As New Database1Entities 
      Dim record As New List(Of BodyStyle) 
      record = (From b In db.BodyStyles Where b.KovID = KovID Select b).ToList 
      Return record 
     End Function 

的Jquery:

function ajaxSuccess(record) { 
     var drop2 = $('#Vehicle_BodyStyle_value'); 
     drop2.get(0).options.length = 0; 
     drop2.get(0).options[0] = new Option("Please Select One", "-1"); 
     $.each(record, function (index, item) { 
      alert(index); 
      alert(item); 
      drop2.get(0).options[drop2.get(0).options.length] = new Option(item.Display, item.Value); 
     }); 
    } 

    function ajaxError() { 
     $('#Vehicle_BodyStyle_value').get(0).options.length = 0; 
     $('#Vehicle_BodyStyle_value').get(0).options[0] = new Option("Error!", "-1"); 
     alert("Failed to load styles"); 
    } 

    $('#Vehicle_KovId_value').change(function() { 
     var kovID = $(this).val(); 
     var drop2 = $('#Vehicle_BodyStyle_value'); 
     if (kovID != null && kovID != '') { 
      drop2.get(0).options.length = 0; 
      drop2.get(0).options[0] = new Option('Please Select One', '-1'); 
      $.ajax({ 
       type: "GET", 
       url: '/Ajax/Index', 
       async: false, 
       data: { KovID: kovID }, 
       contentType: "application/object; charset=utf-8", 
       success: ajaxSuccess, 
       error: ajaxError 
      }); 
     } 
    }); 

我需要做的就是回到record的东西我可以去通过,并从其中提取信息。任何帮助深表感谢!

回答

2

如果您在服务器端代码中使用WebAPI方法,那么我会期待它为您序列化为JSON,但由于未知的原因,这似乎并未发生。不知何故,List(Of BodyStyle)只是被转换成一个字符串,这导致了输出。

我确定还有其他的事情要做,以使这种更加通俗的WebAPI功能,但在一个捏,你总是可以手动返回一个JSON序列化的字符串使用the JavaScriptSerializer object

你会改变方法签名返回一个字符串:

Function Index(ByVal KovID As String) As String 

,然后返回对象的序列化字符串:

Return New JavaScriptSerializer().Serialize(record) 
+0

这确实帮助,但现在我有一个很长的字符串,我不确定如何处理。但那个我可以从办公室得到帮助。非常感谢,大卫。 – Kendra

+0

@Kendra:如果长字符串是列表的内容,那么很可能是JavaScript代码中的一组记录。 (例如,可以迭代的东西。)它应该只是在服务器端代码中具有相同值“record”的JavaScript表示形式。 (我认为这应该叫'纪录'(复数),因为它是一个列表。) – David

+0

它是。我只需要弄清楚如何调整代码以正确地遍历它。因为现在,当'$ .each'函数遍历代码时,它逐个字符地输入,这对于用适当的信息填充下拉菜单并不适用。 – Kendra