2016-05-05 55 views
1

我正在用mongoDB作爲數據庫和數據表來構建web應用程序來處理我的表。 我的問題是,在渲染過程中,我得到了[對象對象],而不是從mongodb檢索中獲取ObjectID。MongoDB objectID成爲datatables渲染器中的[object object]

因此,在HTML我有這樣的代碼:

var t = $("#general-table-list").DataTable({ 
     sAjaxSource: "/AccountCategories/Get", 
     "bFilter": false, 
     "deferLoading": 0, 
     "columnDefs": [ 
     { 
      'targets': 2, 
      'searchable': false, 
      'orderable': true, 
      'className': 'dt-body-center', 
      'render': function (data, type, full, meta) { 
       return '<a href="/AccountCategories/Details/' + full.Id.toString() + '" class="btn btn-info"><span class="fa fa-edit"></span> Edit</a> '; 
      } 
     }], 
     "select": [ 
      { 
       "style" : "os", 
       "selector": "td:first-child" 
      } 
     ], 
     "columns": [ 
       { "data": null, "orderable": false }, 
       { "data": "Name", "orderable": false }, 
       { "data": "Action", "orderable": false } 
     ], 
     "order": [], 
    }) 

    t.on('order.dt search.dt', function() { 
     t.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) { 
      cell.innerHTML = i + 1; 
     }); 
    }).draw(); 

我如何獲得數據:

public JsonResult Get(DataTableParameters param) 
{ 
    var data = _helper.GetData(param); 
    return Json(data, JsonRequestBehavior.AllowGet); 
} 
下面

是截圖:

http://i117.photobucket.com/albums/o56/po_se_for/deep-code_zpslm86n7qi.png

這是什麼在UI上呈現:

http://i117.photobucket.com/albums/o56/po_se_for/deep-code-html_zpsyp8dwjgb.png

我該如何解決這個問題?感謝所有幫助

==== ==== UPDATE

我設法更改ID 解決這一問題從:

[BsonId] 
public ObjectId Id { get; set; } 

到:

[BsonId] 
[BsonRepresentation(BsonType.ObjectId)] 
public string Id { get; set; } 

回答

1

您的Id是一個完全解構的_bson對象(如您在調試器中所見)。它看起來像你的服務器以這種方式序列化Id。而且它在服務器中可以解決這個問題。

不能說我以前見過一個服務器序列化一個Id之前(默認情況下)。更常見的是由Mongoose完成的,您會看到一個錯誤地將id標識爲_bson對象而不是簡單的24個字符的十六進制字符串。

無論如何,解決方案存在於您的mongo界面中,它爲您的API提供了結果jsoninfyng。

+0

謝謝,我已經設法修復它,細節添加在帖子上。 :) – Gerry

相關問題