Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
Recibí un objeto NULL en el controlador cuando envié una solicitud desde la vista (Ajax), incluso si uso [FromBody] C#

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,

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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:

  1. contentType eliminado de su llamada AJAX
  2. Se agregó el atributo [HttpPost] en su método de Controller
  3. Se eliminó el atributo [FromBody] para obtener sus datos como una cadena JSON
  4. Cambió sus data 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); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda