/ / Pasar parámetros de fecha a @ url.action a través de ajax - ajax, asp.net-mvc, asp.net-mvc-ajax, url.action

Pasando los parámetros de fecha a @ url.action a través de ajax - ajax, asp.net-mvc, asp.net-mvc-ajax, url.action

En mi aplicación ASP.NET MVC 4, estoy usando el siguiente código JAX tomado de este Post StackOverflow pasar los parámetros de fecha a un controlador pero estoyobteniendo el siguiente error http 404: "El recurso que está buscando se ha eliminado, se le ha cambiado el nombre o no está disponible temporalmente. URL solicitada / myWebApp / myController / myAction / 01/01/2014/12/31/2014"

Aquí la entrada controla txtFrom y txtTo havelos valores 01/01/2014 y 31/12/2014 respectivamente. El problema es que MVC probablemente está interpretando cada fecha como tres parámetros diferentes. ¿Cómo podemos arreglarlo? Intenté reemplazar $ ("# txtFrom"). Val () con $ ("# txtFrom"). Val (). Replace ("/// g", "_") pero no funciona.

window.location.href = "@Url.Action("myAction")/" + $("#txtFrom").val() + "/" + $("#txtTo").val();

Metodo de accion:

public ActionResult myAction(string startDate, string endDate)
{
//simple code here to use the input parameters
}

Respuestas

1 para la respuesta № 1

Puede formatear la cadena de fecha con Razor

@HttpUtility.UrlEncode(date)

con javascript

encodeURIComponent(date)

o pase la fecha como ticks (milisegundos desde Epoch) en lugar del formato legible por humanos.

Editar:

Después de experimentar con esto y un poco de investigación, parece que la barra y %2f La codificación causa todo tipo de problemas. Mantenga la representación de milisegundos para una fecha y no se preocupe por pasar la barra diagonal.


0 para la respuesta № 2

window.location.href no es ajax Es su navegador haciendo una solicitud de obtención de HTTP a la url. En su caso, no es una url completa, sino parcial; De ahí el error. Puede intentar lo siguiente para comenzar. Sustituya los valores codificados por fechas con sus entradas

$.getJSON({‘@Url.Action("myAction")’ + "/", { startDate: ‘1/1/2001’, endData: ‘1/2/2002’ }});

Si desea procesar cualquier valor de retorno; consulte la documentación de jquery en $ .getJSON (http://api.jquery.com/jquery.getjson/)