如何将多个列表从控制器动作返回到ajax成功回调函数

rak*_*shi 7 javascript c# ajax asp.net-mvc-4

我正在创建一个mvc .net项目,其中我有jquery ajax请求如下

$.ajax({
        url: "@Url.Action("getdata", "SeatPlans")",
        data: { seat_plane_id : 17},
    type: "POST",
    dataType: "json",
    success: function (data) {
        loadData(data);
    },
    error: function () {
        alert("Failed! Please try again.");
    }
});
Run Code Online (Sandbox Code Playgroud)

它调用以下控制器动作

public JsonResult getdata(int seat_plane_id)
    {
        int lid = seat_plane_id;
        List<SeatPlans> allUser = new List<SeatPlans>();
        allUser = db.SEATPLAN.Where(d => d.layout_id == lid).ToList();
        lid++;
        List<SeatPlans> allUser1 = new List<SeatPlans>();
        allUser1 = db.SEATPLAN.Where(d => d.layout_id == lid).ToList();

        return new JsonResult { Data = allUser,JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }
Run Code Online (Sandbox Code Playgroud)

代码工作正常.控制器动作将allUser中的数据发送给回调函数.

但我需要的是,我想将alluser和allUser1中的数据发送到ajax调用的成功函数

Cod*_*aca 5

我想你想要将列表分开.将它们包裹在一个物体中.

var data = new { allUser = allUser , allUser1 = allUser1 }; 
return Json(yourObject, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

您可以在JS中访问它们,如下所示:

success: function (data) {
   var allUser = data[0];
   var allUser1 = data[1];
   //use the data as you see fit.
   loadData(allUser);
   loadData(allUser1 );
},
Run Code Online (Sandbox Code Playgroud)


小智 1

我将创建一个具有 2 个属性的类

int lid = seat_plane_id;
List<List<SeatPlans>> listOfSeatPlans (a collection of collections)

List<List<SeatPlans>> list = new ...
list.Add(allUser);
list.Add(someUsers);
Run Code Online (Sandbox Code Playgroud)

现在您可以将类对象返回为 JSON