2015-10-20 67 views
0

在這裏有一個很好的JSON問題;在MVC中顯示之前格式化JSON字符串? (與datatables)

我不知道如何去格式化日期,時間跨度,小數等,然後將其發送到MVC中的視圖。我使用數據表jQuery插件,我的'DataHandler'方法返回一個JSON對象作爲數據表的源。

當我處理數據和過濾客戶端時,它非常簡單,但現在我正在處理服務器端的數據。

控制器:

public JsonResult DataHandler(DTParameters param) 
     { 
      try 
      { 
       var dtsource = new List<spRegistrations_Result>(); 
       using (entities dc = new entities()) 
       { 
        dtsource = dc.spRegistrations().ToList(); 
       } 

       List<String> columnSearch = new List<string>(); 

       foreach (var col in param.Columns) 
       { 
        columnSearch.Add(col.Search.Value); 
       } 

       List<spRegistrations_Result> data = new ResultSet().GetResult(param.Search.Value, param.SortOrder, param.Start, param.Length, dtsource, columnSearch); 
       int count = new ResultSet().Count(param.Search.Value, dtsource, columnSearch); 
       DTResult<spRegistrations_Result> result = new DTResult<spRegistrations_Result> 
       { 
        draw = param.Draw, 
        data = data, 
        recordsFiltered = count, 
        recordsTotal = count 
       }; 
       return Json(result); 
      } 
      catch (Exception ex) 
      { 
       return Json(new { error = ex.Message }); 
      } 
     } 

表初始化:

var table = $('#myTable').DataTable({ 
      responsive: true, 
      "serverSide": true, 
      "ajax": { 
       "type": "POST", 
       "url": '/Table/DataHandler', 
       "contentType": 'application/json; charset=utf-8', 
       'data': function (data) { return data = JSON.stringify(data); } 
      }, 
      "drawCallback": function(settings){ 
       $('.card').hide(); 
      }, 
      "paging": true, 
      "deferRender": true, 
      "columns": [ 
      { "data": "RegId" }, 
      { "data": "PresenceDate" }, etc... 

型號:

public int RegId { get; set; } 
public System.TimeSpan StartTime { get; set; } 
public System.TimeSpan EndTime { get; set; } 
public System.DateTime PresenceDate { get; set; } 

This is how it looks when the table is displayed

正如你所看到的,日期格式不是很好,這也是我想在顯示數據之前格式化數據的原因。我最終希望在表格中展示的幾個TimeSpan對象也是如此。

我對ajax還很新,也不知道如何去做這個最簡單的方法。感謝您的任何意見!

回答

0

您可以使用columns.render屬性來定義表格單元格的內容,使用自定義js函數來格式化日期。喜歡的東西:

... 
"render": function (data, type, full, meta) { 
     var date = new Date(parseInt(data.substr(6), 0)); 
     return ISODateString(date); 
} 

的功能來格式化日期日/月/ YYYY:

function ISODateString(d) { 
    function pad(n) { return n < 10 ? '0' + n : n } 
    return pad(d.getDate()) + '/' + pad(d.getMonth() + 1) + '/' + d.getFullYear(); 
} 
+0

非常感謝,我解決它使用這種技術。現在看起來很美:) –