【问题标题】:how to return the multiple lists from controller action to ajax success call back function如何将多个列表从控制器操作返回到 ajax 成功回调函数
【发布时间】:2016-09-09 10:23:09
【问题描述】:

我正在创建一个 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 调用的成功函数

【问题讨论】:

  • 显示你的控制器代码
  • 一分钟编辑出现问题
  • 你的 JS 中的 pre 标签是怎么回事?
  • 对不起,先生,标签包含错误

标签: javascript c# ajax asp.net-mvc-4


【解决方案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

【讨论】:

    【解决方案2】:

    我想您希望将列表分开。将它们包装在一个对象中。

    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 );
    },
    

    【讨论】:

    • 即使你可以将成功函数写成-success: function (data) { loadData(data.allUser); loadData(data.allUser1);}
    【解决方案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 现在包含所有需要的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 2014-03-27
      • 2014-12-23
      相关资源
      最近更新 更多