/ / Passer les paramètres de date à @ url.action via ajax - ajax, asp.net-mvc, asp.net-mvc-ajax, url.action

Passage des paramètres de date à @ url.action via ajax - ajax, asp.net-mvc, asp.net-mvc-ajax, url.action

Dans mon application ASP.NET MVC 4, j'utilise le code JAX suivant extrait de ce StackOverflow post passer les paramètres de date à un contrôleur mais je suisobtenir l'erreur http 404 suivante: "La ressource que vous recherchez a été supprimée, son nom a été modifié ou est temporairement indisponible. URL demandée / myWebApp / myController / myAction / 01/01/2014/12/31/2014"

Ici, les contrôles d'entrée txtFrom et txtTo haveles valeurs 01/01/2014 et 31/12/2014 respectivement. le problème est que MVC interprète probablement chaque date comme trois paramètres différents. Comment pouvons-nous y remédier. J'ai essayé de remplacer $ ("# txtFrom"). Val () par $ ("# txtFrom"). Val (). Replace ("/// g", "_") mais cela ne fonctionne pas.

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

Méthode d'action:

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

Réponses:

1 pour la réponse № 1

Vous pouvez soit formater la chaîne de date avec Razor

@HttpUtility.UrlEncode(date)

avec javascript

encodeURIComponent(date)

ou passez la date en ticks (millisecondes depuis Epoch) au lieu du format lisible par l'homme.

Modifier:

Après avoir expérimenté cela et un peu de recherche, il semble que la barre oblique et %2f l'encodage provoque toutes sortes de problèmes. Tenez-vous à la représentation en millisecondes pour une date et ne vous inquiétez pas de passer la barre oblique.


0 pour la réponse № 2

window.location.href n'est pas ajax. C'est votre navigateur qui fait une requête HTTP get à l'url. Dans votre cas, ce n'est pas une URL complète, mais partielle; d'où l'erreur. Vous pouvez essayer ce qui suit pour commencer. Remplacez les valeurs codées en dur pour les dates par vos entrées

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

Si vous souhaitez traiter une valeur de retour; reportez-vous à la documentation jquery sur $ .getJSON (http://api.jquery.com/jquery.getjson/)