Estoy tratando de enviar los datos consultados recopilados del contexto a la persona que llama ajax con el siguiente estado
1-El lado del servidor del código fuente tiene éxito al consultar los datos. 2-El lado del servidor del código fuente envía correctamente los datos en caso de que se use HTTPPOST o HTTPGET 3-No hay excepciones ni errores en el código fuente 4-la aplicación del método JSON (objeto consultado) no hace ningún cambio El escenario es el siguiente:- usando la llamada ajax de la siguiente manera
$.ajax({ type: "POST", url: '@Url.Action("MainCatItems", "Cachier")', contentType: "application/json; charset=utf-8", data: datas, dataType: "json", success: successFunc, error: function (xhr) { alert('Error: ' + xhr.statusText); }, });
llamando a un controlador de acción
[HttpPost] public ActionResult MainCatItems(int mainCatNo) { var results = ......//fetching data from Context return Json(new { data = results }, JsonRequestBehavior.AllowGet); }
, la llamada envía correctamente mis parámetros a la acción, pero enviar una respuesta a la llamada ajax desde el controlador es un poco confuso ya que tengo dos casos:
El primero: (funcionando perfectamente) Estoy devolviendo datos consultados desde una clase de tabla en mi Entity Framework ( Clase de registro de notificación )
public partial class RegisterNotification { //setters and getters }
que es una sola clase sin propiedad de navegación declarada dentro
El segundo (donde está el problema). Estoy devolviendo datos consultados desde una clase de tabla en mi Entity Framework (Item Class"partial class")
Parte uno:-
public *partial* class Item { // setters and getters }
La segunda parte:-
public *partial* class Item { //setters and getters }
que es una clase parcial con propiedades de navegación declaradas dentro
Este caso no funciona y cuando vuelve a la llamada ajax, alerta el mensaje de función de error que dice "error interno del servidor 500". He intentado analizar los datos consultados en un objeto JSON en mi controlador: -
var t = Json(res,"application/json; charset=utf-8",JsonRequestBehavior.AllowGet);
Datos consultados en el lado del servidor de código fuente
Detalles del mensaje de error del lado del cliente
Pero de nuevo con el fracaso. Gracias por preocuparte.
establezca ProxyCreationEnabled
en false
como este
[HttpPost] public ActionResult MainCatItems(int mainCatNo) { entity.Configuration.ProxyCreationEnabled = false; var results = _model.Item.Where(x => x.MenuCategoryID == mainCatNo).ToList(); return Json(new { data = results }, JsonRequestBehavior.AllowGet); }
está utilizando un objeto proxy generado por el marco de la entidad que podría estar causando problemas en la serialización
public JsonResult GetCatItems(int mainCatNo) { var results = ......//fetching data from Context return Json(new { data = results }, JsonRequestBehavior.AllowGet); }
Prueba esto... Podría ayudarte Y puedes llamar a este método desde un controlador de acción.
$.ajax({ type: "POST", url: '@Url.Action("GetCatItems", "Cachier")', contentType: "application/json; charset=utf-8", data: datas, dataType: "json", success: successFunc, error: function (xhr) { alert('Error: ' + xhr.statusText); }, });