簡體   English   中英

如何為數據表服務器端處理返回JSON對象

[英]How to return JSON object for datatables server side processing

我需要使用服務器端處理將一些數據加載到數據表中。

我需要將自定義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"
 },

] 

您必須將列表制作為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

我實際上所做的是使用動態對象語法來格式化返回的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM