【问题标题】:How to format data in C# ASP.Net MVC for datatable.net ajax call如何在 C# ASP.Net MVC 中格式化数据以进行 datatable.net ajax 调用
【发布时间】:2013-06-06 08:56:24
【问题描述】:

我想知道如何在 asp.net mvc 4 应用程序中将数据传递给 datatable.net。

像这个例子: http://www.datatables.net/release-datatables/examples/data_sources/ajax.html

我想要的输出格式是这样的,但是我不知道如何产生这个结果:

{
"aaData": [
[
  "Trident",
  "Internet Explorer 4.0",
  "Win 95+",
  "4",
  "X"
],
[
  "Trident",
  "Internet Explorer 5.0",
  "Win 95+",
  "5",
  "C"
]
]
}

到目前为止,我有这样的事情:

 public JsonResult GetDataList(int? assetId)
    {
        var tableData = DBData.ToList();

        var res = new JsonResult
        {
            JsonRequestBehavior = JsonRequestBehavior.AllowGet,
            Data = ??? // I must do something here with tableData
        };


        return res;

    }

【问题讨论】:

    标签: c# ajax asp.net-mvc jquery-datatables


    【解决方案1】:

    我假设您想将数据表转换为 json?如果我错了,请纠正我。您可以使用 json.net 库:

    http://james.newtonking.com/projects/json-net.aspx

    string json = JsonConvert.SerializeObject(table, Formatting.Indented);
    

    【讨论】:

      【解决方案2】:

      试试下面的 JsonResult,它应该以数据表插件所期望的格式返回结果。

      public JsonResult GetDataList(int? assetId)
      {
          var tableData = DBData.ToList();
      
          return Json(new {
              aaData = ???
          },
          "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
      }
      

      这应该返回您的 Json,如下所示:

      {
          "aaData": [
              {
                "Trident",
                "Internet Explorer 4.0",
                "Win 95+",
                "4",
                "X"
              },
              {
                "Trident",
                "Internet Explorer 5.0",
                "Win 95+",
                "5",
                "C"
              },
          ]
      }
      

      【讨论】:

        【解决方案3】:

        我想通了,我的问题是我必须使用对象数组 (object[]),而不是列表

         public JsonResult GetData(int? Id)
            {
                List<sp_data_R_Result> tableData;
                if (assetId != null)
                    tableData = DBData.Where(x => x.Id== Id).ToList();
                else
                    tableData = DBData.ToList();
        
                var res = new JsonResult
                {
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                    Data = new
                            {
                                aaData = from d in tableData
                                         select new object[]
                                        {
                                          d.col1,
                                          d.col2,
                                          ...
                                         }
                            }
                };
        
                return res;
            }
        

        【讨论】:

          【解决方案4】:

          对我来说,这个很有效:

          return Json(new {
                              aaData = Json(list).Data
                          },
                          "application/json", JsonRequestBehavior.AllowGet);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-05-20
            • 1970-01-01
            • 2014-08-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-23
            • 1970-01-01
            相关资源
            最近更新 更多