MVC+EF bootstrap-table使用DataTable遇到問題與解決

  MVC+EF返回數據集時都會對應一個實體,這種狀況固然是肯定的實體,可是當返回的實體是不肯定的又該如何?思前想後,以爲datatable應該能夠知足需求,可是當興致勃勃的組合完sql按照之前的方式( return Json(new { total = pageCount, rows = list }, JsonRequestBehavior.AllowGet);)返回json時前臺接收報錯 」序列化類型爲「System.Reflection.RuntimeModule」的對象時檢測到循環引用「 具體緣由還不是很清楚】 可是感受就是序列化json對象是失敗,轉而考慮直接返回json格式字符串,代碼以下:
sql

 

1 JsonSerializerSettings setting = new JsonSerializerSettings() 2  { 3                     ReferenceLoopHandling = ReferenceLoopHandling.Ignore 4  }; 5 
6                 var ret = "{\"total\":" + dt.Rows.Count + ",\"rows\":" + JsonConvert.SerializeObject(dt, setting) + "}"; 7                 
8                 return Json(ret, JsonRequestBehavior.AllowGet);
View Code

 

確實前臺再也不報上述錯誤,可是加載不上數據,查看了bootstrap-table api發下有個responseHandler屬性:加載服務器數據以前的處理程序,能夠用來格式化數據。遂再次方法中嘗試把取得的數據轉換成json對象,以下代碼:數據庫

responseHandler: function (res) { //後臺數據源爲datatable返回json字符串,須要處理成json對象
res = eval('(' + res + ')') return res; }

最終數據成功加載。文章開頭我提過動態的列頭及bootstrap-table列頭須要從數據庫中動態獲取,程序中我作了特殊處理前臺會動態生成columns,後臺也會動態生成datatable表頭,下圖顯示效果。json