Modelo:
public class From { public DateTime from { get; set; } public DateTime to { get; set; } }Controlador:
public MediaViewModel DashboardMediaByDate([FromBody] From y) { // some logic }Vista:
<script> $(function () { // Get value on button click and show alert $("#myBtn").click(function () { var from = { from: $("#from").val(), to: $("#to").val() }; alert(from.from); var y = JSON.stringify(from); $.ajax({ type: "POST", data: y, dataType: 'json', url: "/Queues/DashboardMediaByDate", contentType: "application/json" }).done(function (res) { alert(res); }); }); }); </script>Cuando depuro la solicitud del navegador:
Solicitud de carga útil del encabezado
Lo que recibí en el controlador:
Parámetro del método
¿Cómo puedo enviar el objeto al controlador desde el modelo de vista?
Gracias por adelantado,
Puede usar la siguiente llamada AJAX para obtener sus datos según sea necesario:
AJAX :
<script> $(function () { // Get value on button click and show alert $("#myBtn").click(function () { var from = { from: $("#from").val(), to: $("#to").val() }; alert(from.from); $.ajax({ type: "POST", data: {'json': JSON.stringify(from)}, dataType: 'json', url: "/Queues/DashboardMediaByDate" }).done(function (res) { alert(res); }); }); }); </script> Y su método Controller :
using System.Web.Script.Serialization; [HttpPost] public JsonResult DashboardMediaByDate(string json) { MediaViewModel myModel = new MediaViewModel(); var serializer = new JavaScriptSerializer(); dynamic jsondata = serializer.Deserialize(json, typeof(object)); //Get your variables here from AJAX call var from = Convert.ToDateTime(jsondata["from"]); var to = Convert.ToDateTime(jsondata["to"]); //Your logic return Json(new {myModel=myModel}); }Cambios de su llamada original:
contentType eliminado de su llamada AJAX[HttpPost] en su método de Controller[FromBody] para obtener sus datos como una cadena JSONdata para enviar una cadena JSON en lugar de un Model Una vez que obtenga sus datos como una cadena JSON , puede deserializarlos en su estructura de Model según sea necesario. Usualmente uso este método cuando mi Model no tiene muchas propiedades.
Está utilizando AJAX para su funcionalidad, que generalmente se usa para actualizar una parte de la página sin recargar toda la página. Si desea redirigir en el método POST desde su Controller con un Model , entonces no use ajax para su propósito. Alternativamente, si sabe qué agregar a la vista que devuelve, maneje la devolución de llamada exitosa y actualice el DOM.
Puede acceder al Model anterior en su método de success dentro de su AJAX de esta manera:
success: function(data) { //Get your model here console.log(data.myModel); }