Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

180
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda