Comment puis-je passer une date via l'URL?
Voici ce que j'essaie de faire, comme vous le verrez que la date utilise des barres obliques qui ne sont pas valides dans l'URL P>
http://localhost/Controller/Action/id=0d5375aa-6d43-42f1-91f0-ea73d9beb361&date=02/12/2009
4 Réponses :
Vous pouvez le coder URL, mais la transmission d'une date d'heure autour de la chaîne est toujours un peu délicate, car vous pouvez rencontrer des erreurs d'analyse si la demande franchit déjà les limites de la culture. P>
Une meilleure option consiste à convertir la dateTime en ticks et transmettez ce numéro autour. P>
Que diriez-vous d'utiliser le format ISO (AAAA-MM-DD)? Avons-nous encore besoin de convertir en ticks.
Vous pouvez passer une date dans la chaîne de requête à l'aide d'un format spécifique, disons yyyymmdd, puis l'analyser correctement dans votre contrôleur.
public MyWrapperDate(int date) { int year = date / 10000; int month = ((date - (10000 * year)) / 100); int day = (date - (10000 * year) - (100 * month)); this.DateTimeObject = new DateTime(year, month, day); }
MVC utilise la culture actuelle lors de la génération d'URL et de modèles de liaison. Cela a du sens dans certains scénarios (comme lorsque vous avez une zone de texte et l'utilisateur pénètre dans la date), mais il y a souvent des problèmes. Si vous avez des cultures différentes, il est plus facile si les valeurs sont toujours au format de la culture invariante. P>
Dans votre cas, je passerais la valeur comme une chaîne rendue par la culture invariante. Ensuite, j'utiliserais un CustommiedelBinder pour remplir la propriété dans le modèle. P>
Le ISO 8601 Standard est Yyy-MM-DD, qui est sans ambiguïté et ne contient pas Tous les caractères URL non valides et fonctionne bien dans DateTime.parse / Tryparse. P>
Une autre option consiste à utiliser le format de votre choix et à encoder simplement l'URL à l'aide de HTTPServerutilitility.urlencode / Urldecode. P>
Cela devrait être au sommet et être garé comme la réponse. Simple, correct et fonctionne.
Devez-vous le transmettre dans l'URL? Utilisez QueryString ou un autre dict qui est disponible sur les pages.