Resulta que estoy haciendo unas cosillas con javascript y necesito realizar algunas operaciones d back-end y me he decidido en hacer un ApiWeb, el problema viene cuando hago la petición ajax y desde el back (realizado en c#) no consigue recoger los datos aun ejecutándose el método.
Lo primero que hice fue Rutear el web api para poder llamar a métodos específicos, lo hice de la siguiente manera en el WebConfig:
Código C:
Ver original
config.Routes.MapHttpRoute( name: "DefaultApiRouted", routeTemplate: "api/{controller}/{action}/{param}", defaults: new { param = RouteParameter.Optional } );
Después de realizar esta operación me decidí realizar un método especifico en el ValuesController, que hereda de ApiController:
Código C:
Ver original
[HttpGet] [HttpPost] public IHttpActionResult Prueba([FromBody]Persona data) { return Ok(new { message = "Llego" }); } public class Persona { public string username { set; get; } public string email { set; get; } public string password { set; get; } }
He mirado por muchas paginas y he probado muchos ejemplos y no consigo que esa Persona que entra coja un valor, el método se me ejecuta pero esa persona es null, en vez de eso también he probado ICustomFormater, string, etc. Con todos esos he conseguido el mismo resultado, que el método se ejecute pero no coja valor la entrada.
Desde JavaScrpt lo envío de la siguiente manera:
Código Javascript:
Ver original
var Persona = new Object() Persona.username ="Pepe"; Persona.password ="12345"; $.ajax({ url: "http://localhost:5311/api/values/Prueba", contentType: "application/json", dataType: "json", data: Persona, type: 'POST', success: function (json) { alert(json.message) }, error: function (xhr, status) { alert("He petao") }, complete: function (xhr, status) { } });
El resultado que me envia la webApi hacia el js si la recibo bien y en formato JSOn pero es que a la inversa no soy capaz de recoger el valor, si alguien puede ayudarme se lo agradecería mucho.