【问题标题】:How to return JSON object for datatables server side processing如何为数据表服务器端处理返回 JSON 对象
【发布时间】:2013-09-28 01:07:20
【问题描述】:

我需要使用服务器端处理将一些数据加载到数据表中。

我需要将自定义 JSON 对象返回给 datatables 对象的 aaData 属性,以进行一些自定义格式设置。我不能简单地返回一个字符串数组。

这是我返回数组的控制器操作(这是我需要更新的内容):

 var result = from u in filteredResults
                     select new string[] {Convert.ToString(u.userId), u.userName, u.roleId.ToString(), u.type, u.isActive.ToString(), u.firstName, u.lastName, 
                     u.email, u.phone, u.Postcode, u.Street, u.Street, u.company, u.jobId.ToString(), u.job, u.country, u.countryName, u.City, u.LoginsNum.ToString(), 
                     u.LastLogin.ToString()};           

        return Json(new
        {
            sEcho = param.sEcho,
            iTotalRecords = result.Count(),
            iTotalDisplayRecords = result.Count(),
            aaData = result  ** NOT OK; must be updated **
        }, JsonRequestBehavior.AllowGet);

生成的对象必须是这种形式:

[
 { "prop1": "val1",
   "prop2": "val2",
    ......
   "propn": "valn"
 },
 .................


 { "prop1": "val1",
   "prop2": "val2",
    ......
   "propn": "valn"
 },

] 

【问题讨论】:

    标签: javascript asp.net-mvc json datatables


    【解决方案1】:

    您必须将列表设为JSON 字符串,并且您的操作返回类型为JsonResult

    public JsonResult GetData()
    {
         var list = filteredResults.Select(temp => new[] { temp.userId.ToString(), temp.userName.ToString(), temp.email.ToString(), temp.phone.ToString(), temp.Postcode.ToString(), temp.Street.ToString(), temp.LastLogin.ToString() }).FirstOrDefault();
         return Json(list, JsonRequestBehavior.AllowGet);
    }
    

    您必须调用 GetData() 操作并返回 JSON

    【讨论】:

      【解决方案2】:

      我实际上是使用动态对象语法来格式化返回的 JSON 数组,如下所示:

      var result = from u in filteredResults
                           select new 
                           {
                               id = Convert.ToString(u.userId), 
                               userName = u.userName, 
                               roleId = u.roleId.ToString(), 
                               roleName = u.type, 
                               isActive =  u.isActive == true ? "Active" : "Inactive", 
                               firstName = u.firstName, 
                               lastName = u.lastName, 
                               email = u.email, 
                               phone = u.phone,
                               postcode = u.Postcode, 
                               street = u.Street, 
                               company = u.company, 
                               jobId = u.jobId.ToString(),
                               job = u.job, 
                               //countryKey = u.country, 
                               countryName = u.countryName, 
                               city = u.City, 
                               loginsNum = u.LoginsNum.ToString(), 
                               lastLogin = u.LastLogin.ToString()
                           };
      
              return Json(new
              {
                  sEcho = param.sEcho,
                  iTotalRecords = result.Count(),
                  iTotalDisplayRecords = result.Count(),
                  aaData = result
              }, JsonRequestBehavior.AllowGet);
      

      【讨论】:

        猜你喜欢
        • 2017-05-15
        • 2016-05-04
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多