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);
});