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 № 1Vous 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/)