2015-10-20 101 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

非常感谢,我解决它使用这种技术。现在看起来很美:) –