Je veux attirer l'attention sur les différences par rapport à Chemin de codage de chaîne de requête
MVC permet/nous encourage à écrire des chemins (routes) qui peuvent être plus faciles à mémoriser que les chaînes de requête. par exemple. /Products.aspx?id=1
pourrait, dans MVC, être /Products/View/1
bâtiment à ce sujet, il encourage aussi, pour la convivialité de référencement, d'autres données qui peuvent ou peuvent ne pas être nécessaire comme /Products/View/1/Coffee
Si le nom comporte des caractères d'espace, ou un paramètre nécessaire est une chaîne contenant des caractères espace, et vous l'incluez dans le chemin Url, l'une des 2 choses doit se produire car un '' ne peut pas être laissé dans un paramètre Url Path ou Query string sans être codé.
- Vous devez
UrlPathEncode()
la chaîne
- d'abord vous transformez les espaces dans la chaîne,
- puis appelez
UrlPathEncode()
que vous pouvez avoir d'autres caractères nécessitant un codage.
Remarque: il y a une grande différence entre Url Encoding (destiné à des chaînes de requête) et l'URL Encodage Path (destiné aux portions de chemin de urls)
cats the musical
-> UrlEncode - >cats+the+musical
- c'est pas valide dans un chemin url
cats the musical
-> UrlPathEncode ->cats%20the%20musical
Si vous suivez le long; revenir à Web Forms vs MVC - /Products.aspx?name=Coffee+Beans
serait réécrit comme /Products/View/Coffee%20Beans
Alors cela nous laisse où la question de OP commence. Q: Comment obtenez-vous SEO et humain Urls? Q: Utilisez le code @Guffas pour remplacer le "" par "-" dans votre propre code avant UrlPathEncoding le reste. Dans les sites où nous avons travaillé, lorsque nous avons une valeur saisie par l'utilisateur utilisée uniquement pour le référencement (comme un titre de blog ou similaire), nous allons encore plus loin en normalisant la chaîne de caractères en réduisant les espaces successifs en un seul. " par exemple
cats the musical
qui serait autrement
cats-----the-----musical
devient
cats-the-musical
ne pas oublier de prendre soin de caractères spéciaux – Cleiton
Ceux-ci seraient pris en charge par l'appel à Encode de toute façon, ne pas? –
Juste un commentaire en général: Le codage Url Path est différent du codage Url Parameter. Les caractères "+" dans le chemin ne remplacent pas correctement le caractère "" et causeraient des problèmes. Pour SEO comme vous l'avez fait ci-dessus, remplacer "" par "-" est une bonne technique cependant. MVC peut faire apparaître que les chemins et les paramètres de chaîne de requête sont interchangeables, mais ils ne le sont pas. –