Dans mon asp.net demande mvc J'ai créé le lien suivant:Quel est le problème avec mon encodage d'URL?
http://localhost:2689/en/Formula.mvc/351702++LYS+GRONN+5G+9%252f2++fds
Je reçois une erreur 400 (mauvaise demande). Je pense qu'il bloque au% 25 (barre oblique).
Qu'est-ce que je fais de mal?
--edit 3--
J'ai essayé pas coder quoi que ce soit, mais plutôt compter sur l'encodage par défaut de Url.RouteUrl().
Il semble que cela n'encode pas le "/" pour une raison quelconque.
Si je l'encode moi-même en premier, je me retrouve avec le codage en doute% 252f. Cela me donne une mauvaise demande pour une raison quelconque. Pourquoi ?!
--edit 2--
I généré la dernière partie de l'URI comme suit:
- Prenez le id.toString
- Prenez le HttpUtility.UrlEncode (nom)
- Prenez le HttpUtility.UrlEncode (code)
- String.Format ("{0} - {1} - {2}") avec les valeurs des pièces précédentes
- Ajoutez-le comme un paramètre à Url.RouteUrl()
Ensuite, mon action récupère ce paramètre, le divise en - et HttpUtility.Decode() les valeurs en retour.
Je le fais de cette façon parce que les deux derniers paramètres sont facultatifs, mais les paramètres fonctionnels. S'ils sont définis dans une étape précédente, ils doivent être reportés sur les autres pages.
Moins abstrait: Une couleur peut avoir plusieurs noms, mais si un utilisateur l'a sélectionné par un nom particulier, il doit être conservé dans toutes les autres pages.
--edit 1--
Il ressemble également à HttpUtility.UrlEncode() et Url.Encode() renvoient des résultats différents: S
Si je ne code pas pour le "/", il agit comme un séparateur => pas de chance là-bas. Si j'encoder avec Url.Encode() je me retrouve avec 2F% => Code de 400 Si j'encoder avec HttpUtility.UrlEncode() je me retrouve avec 25% => Code 400
Parce que 400 doesn » laissez même pas jusqu'à asp.net-mvc, le débogueur de route est d'aucune utilité :(
Qu'est-ce que cela signifie représenter? Devrait-il être 351702 ++ LYS + GRONN + 5G + 9% 2f2f2 ++ fds –
Il devrait être 351702 ++ LYS GRONN 5G 9/2 ++ fds –