Estoy creando un proyecto mvc .net en el que tengo la solicitud jquery ajax es la siguiente

$.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.");
    }
});

Que llaman a la siguiente acción del controlador

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

El código funciona bien. la acción del controlador envía los datos en allUser a la función de devolución de llamada.

Pero lo que necesito es que quiero enviar los datos en alluser y allUser1 a la función de éxito de la llamada ajax

7
rakshithrai 13 may. 2016 a las 12:30

3 respuestas

La mejor respuesta

Crearía una clase que tiene 2 propiedades

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

List<List<SeatPlans>> list = new ...
list.Add(allUser);
list.Add(someUsers);

Ahora puede devolver el objeto de clase a JSON

1
Kathleen Turner 15 jul. 2016 a las 14:15

Me imagino que quieres mantener las listas separadas. Envuélvelos en un objeto.

var data = new { allUser = allUser , allUser1 = allUser1 }; 
return Json(yourObject, JsonRequestBehavior.AllowGet);

Puede acceder a ellos en su JS de esta manera:

success: function (data) {
   var allUser = data[0];
   var allUser1 = data[1];
   //use the data as you see fit.
   loadData(allUser);
   loadData(allUser1 );
},
5
Codrin Faca 13 may. 2016 a las 09:51

Solo tiene que modificar su cláusula Where para no necesitar dos listas diferentes para los usuarios. Pruebe esto en su método 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 ahora incluye todos los datos deseados.

3
diiN__________ 13 may. 2016 a las 09:42