vista varios tipo por pasar parámetros parametros net mvc llamar lista enviar desde datos controlador asp array javascript asp.net-mvc

javascript - varios - ASP.NET MVC: pasar JSON DateTime al controlador no se asigna a los parámetros del controlador



pasar varios parametros ajax (4)

Estoy usando un calendario jQuery para mostrar eventos, que está diseñado para extraer datos del servidor. En el calendario, se inicia una solicitud AJAX para obtener una matriz de objetos de eventos (codificado json). Todo bien hasta ahora. Sin embargo, esta solicitud incluye una fecha y hora codificada en JSON (al menos mi implementación lo hace). El código se ve así:

data: function (start, end, callback) { $.post(''/planner/GetPlannerEvents'', { test: "test", start: JSON.stringify(start), end: JSON.stringify(end) }, function (result) { callback(result); }); }

La declaración para el método del controlador GetPlannerEvents se ve así:

public ActionResult GetPlannerEvents(DateTime start, DateTime end)

El problema es que asp.net mvc 2 no parece analizar automáticamente la fecha y hora codificada en json y, como tal, se queja de que los valores de inicio y final son nulos.

¿Hay algún otro método que deba usar para pasar las fechas de javascript al servidor para que puedan analizarse correctamente?

Gracias,


Debe usar el tipo de retorno como 1JsonResult1s en lugar de 1ActionResult1s

tu código va a algo como esto

public JasonResult(DateTime start, DateTime end) { //some logic return Json(); // you can pass any values within Json() with new keyword }


Intente usar date.toISOString() para pasar datos al servidor. Devuelve cadena en formato ISO8601. También este método puede usarse para formatear fechas para usar en uri.

$.post(''/planner/GetPlannerEvents'', { start: start.toISOString(), end: end.toISOString() }, function (result) { callback(result); });

¿Por qué toISOString es mejor que toUTCString ?
toUTCString convierte en una cadena humana legible en la zona horaria UTC.
toISOString convierte al formato ISO universal, lo que permite resolver problemas con configuraciones regionales y diferentes formatos.


Las variaciones de date.toString no me funcionaron hasta que agregué los encabezados json a la publicación. El código resultante es el siguiente:

var pstData = { begDate: date1.toUTCString(), endDate : date2.toUTCString() }; $.ajax({ url:''url'', type:''POST'', data: JSON.stringify( pstData ), contentType: "application/json; charset=utf-8", dataType: "json", })


No debe estar JSON codificando las fechas con stringify porque el stringify modelo predeterminado no espera JSON. Prueba esto:

$.post(''/planner/GetPlannerEvents'', { start: start.toUTCString(), end: end.toUTCString() }, function (result) { callback(result); });