我正在创建一个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.");
}
});
调用以下控制器操作
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 };
}
代码工作正常。控制器动作将allUser中的数据发送给回调函数。
但我需要的是我想将alluser和allUser1中的数据发送到ajax调用的成功函数
答案 0 :(得分:5)
我想你想要将列表分开。将它们包裹在一个物体中。
var data = new { allUser = allUser , allUser1 = allUser1 };
return Json(yourObject, JsonRequestBehavior.AllowGet);
您可以在JS中访问它们:
success: function (data) {
var allUser = data[0];
var allUser1 = data[1];
//use the data as you see fit.
loadData(allUser);
loadData(allUser1 );
},
答案 1 :(得分:3)
您只需修改Where
子句,这样就不需要为用户提供两个不同的列表。请在getdata
方法中尝试此操作:
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 || d.layout_id == (lid+1)).ToList();
return new JsonResult { Data = allUser,JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
allUser
现在包含了所有需要的数据。
答案 2 :(得分: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);
现在您可以将类对象返回给JSON