estoy consiguiendo lo que considero que es una cuestión de unión extraño en el ASP.NET MVC 4 API Web RC. Tengo un método destinado a aceptar solicitudes de correos del cliente. El problema es que ninguno de los parámetros es vinculante cuando se llama al método de publicación, llego a mi punto de interrupción en la línea de lanzamiento y el nombre, ambos son nulos. Si cambio el tipo de solicitud a GET en JavaScript, se llama a la función Get a continuación con los parámetros vinculados.ASP.NET MVC 4 RC Web API Parámetro Número Encuadernación
Por qué son los parámetros en su defecto que se uniera durante el método POST, y cómo puedo solucionar este problema?
send: function(evt) {
evt.preventDefault();
$.ajax({
url: '/api/person',
data: this.model.toJSON(),
type: "POST",
dataType: "json",
success: function(data) {
console.log("Success");
},
error: function(data) {
console.log("Error");
}
});
}
El siguiente es las acciones del controlador:
public void Get(string name, string email) {
throw new NotImplementedException();
}
public void Post(string name, string email) {
throw new NotImplementedException();
}
Notas:
- estoy usando todos los valores predeterminados para ASP.NET MVC 4 API Web RC (para que el deserializer debe ser Json.NET)
- la ficha red Chrome en el depurador JS muestra los parámetros en los datos del formulario en el poste correctamente.
Mi parámetro get no es nulo, de hecho ni siquiera existe. Puede que no haya sido claro, pero solo está ahí para ilustrar que la funcionalidad funciona en GET y no en POST. – Cody
Bien - bien, está bien entonces :). En resumen, si vincula varios parámetros del cuerpo de la solicitud, básicamente, lo más fácil es escribir un tipo de modelo simple como lo he mostrado. –
Gracias por el enlace del artículo de Mike Stall, fue muy informativo sobre lo que está sucediendo. Acabo de suponer que Web API utilizó exactamente la misma estrategia vinculante que MVC. Crear una clase personalizada para recibir los params funcionó a las mil maravillas, no soy fan de esa solución pero no entiendo por qué, así que probablemente solo sea terco. :) En cualquier caso, es la solución que usaré. ¡Gracias!:) – Cody