Ahora probé como 20 formas diferentes y busqué en Google el problema, pero todavía estoy atascado. Mi lista siempre devuelve un valor nulo. Cuando depuro, puedo ver que los valores provienen de la base de datos y todo parece estar bien.
Pero, cuando uso console.log para depurar en la vista, siempre es nulo.
Aquí está mi modelo :
public class GarageModel { public int GarageId { get; set; } public int Values { get; set; } }Método C# :
public List <GarageModel> getRequestType(int garageId) { List<GarageModel> newList = new List<GarageModel>(); string sql = "SELECT GarageID, RequestProperty FROM GarageCrossRequestType WHERE GarageID = " + garageId; var cmd = new SqlCommand(sql, Connection); var dt = new DataTable(); dt.Load(cmd.ExecuteReader()); foreach (DataRow i in dt.Rows) { var model = new GarageModel(); model.GarageId = Convert.ToInt32(i["GarageID"].ToString()); model.Values = Convert.ToInt32(i["RequestProperty"].ToString()); newList.Add(model); } return newList; // returns the values from database }Javascript/jQuery :
function editGarage(e) { e.preventDefault(); var dataItem = this.dataItem($(e.currentTarget).closest("tr")); var garageId = dataItem.GarageId; countryId = dataItem.CountryId; name = dataItem.Name; customerNumberOfEditingGarage = dataItem.CustomerNumber; var Values = dataItem.Values; $.ajax({ type: 'POST', url: '@Url.Action("getRequestType", "Garage")?garageId=' + garageId, dataType: 'JSON', data: { Values: Values, garageId: garageId }, }); console.log(garageId, Values); // always return correct garageId but null in Values // or whatever value is set to Values in the model¿Qué me estoy perdiendo?
Como dije, probé diferentes métodos, cambié los tipos entre get/post, cambié el método a bool, int, etcétera, pero estoy perdido y, sinceramente, no soy especialmente bueno en JavaScript/jQuery. tampoco, así que agradeceré cualquier ayuda que pueda obtener.
Para especificar, el resultado que me gustaría es simplemente ver los valores que obtengo del método/base de datos que se muestran cuando uso console.log para depurar en el navegador.
Su método getRequestType necesita solo un parámetro y values no son un parámetro, así que envíe solo garageId y debe completar values cuando su ajax tenga éxito
$.ajax({ type: 'POST', url: '@Url.Action("getRequestType", "Garage")', dataType: 'JSON', data: { garageId: garageId }, success: function(data){ values = data; console.log(garageId, data); } });Y el método del controlador debe devolver JsonResult en lugar de la lista
public JsonResult /*List<GarageModel>*/ getRequestType ... return Json(newList, JsonRequestBehavior.AllowGet);