2011-01-19 139 views
0

我有一種情況,我想通過Ajax/JQuery傳遞記錄列表。通過jQuery記錄列表

public JsonResult GetListOfRecords() 
{ 
    return Json(_repository.GetAllRecords()); 
} 

當我把這種操作方法與jQuery,這是行不通的:

$.getJSON('GetAllRecords', function(data){ // data is IQueryable<T> or IEnumerabel<T> 
$.each(data, function(d) { 
    $('#somewhere').html(d.Title); //d is SomeModelType and Title is property of that type 
}); 
}); 

注:GetAllRecords方法返回的IQueryable ....我還測試IEnumerable的

但是,如果通過ArrayList類型,它似乎是工作(但不滿足我的需要):

public JsonResult GetAllRecords() 
{ 
    var list = new ArrayList(); 
    foreach(var item in _repository.GetAllRecords()) 
    { 
    list.Add(item.Title); 
    } 
    return Json(list); 
} 

它只是顯示標題...

我的問題是, 「我想通過的IQueryableIEnumerable的通過Ajax。」

回答

1

這似乎並非如此。以下作品與IEnumerable<T>和匿名類型完美的罰款:

public ActionResult GetListOfRecords() 
{ 
    return Json(
     Enumerable.Range(1, 3).Select(i => new 
     { 
      Id = i, 
      Title = "title " + i 
     }), 
     JsonRequestBehavior.AllowGet 
    ); 
} 

和調用:

$.getJSON('<%= Url.Action("GetListOfRecords") %>', { }, function(records) { 
    $.each(records, function(index, record) { 
     alert(record.Id + ' ' + record.Title); 
    }); 
}); 

還要注意在$.each()功能輕微subtility。

在你的情況有:

$.each(data, function(d) { ... 

在我的情況,我有:

$.each(data, function(index, d) { ... 

回調的第一個參數是指數,而不是價值。

+0

OIC ...在jQuery我沒有使用索引參數...它現在可能工作...謝謝 – 2011-01-19 10:14:14