Nous essayons d'utiliser des routes personnalisées dans une application ASP.NET MVC pour générer cet URL: 'http://example.com/Person/unnecessaryinfo-42'
. Le "inutileinfo" est le nom de l'id qui rendra l'URL piratable pour l'utilisateur. Voici le code de notre carte d'itinéraire. Cela fonctionne mais mon action de contrôleur se termine par "unnecesaryinfo-42" dans le paramètre id. Est-ce que je peux enlever le "fichier inutile" avant qu'il n'atteigne l'action du contrôleur?Comment supprimer des informations inutiles d'une URL conviviale avant d'accéder à une action de contrôleur
routes.MapRoute("person_id", "person/{id}",
new { controller = "Customer", action = "Details" },
new { id = @"unnecessaryinfo-\d" });
Edit:
Voici notre dernier code:
routes.MapRoute("person_id", "person/{unnecessaryinfo}-{id}",
new { controller = "Customer", action = "Details" },
new { id = @"[\d]{1,6}" });
Le chapitre sur le routage de ASP.NET MVC 2 In Action (page 234) traite d'éviter l'utilisation des ID de base de données chaque fois que possible, mais si vous devez les utiliser , en ajoutant des informations supplémentaires pour rendre l'URL lisible. C'est ce que nous essayons (sans succès) de faire. L'identifiant de la base de données est actuellement compris entre 1 et 6 chiffres (et peut augmenter au fil du temps).
J'ai essayé exactement ce que vous avez ci-dessus et il me donne toujours "inutileinfo-id" au contrôleur. Je ne comprends pas non plus ce que vous entendez par "Vous pourriez aussi ajouter une contrainte de regex dans le jeton de route" inutile ". – rkgallegos
Quelle URL utilisez-vous? '~/customer/details/foobarunnecessary-5' et' public ActionResult Details (identificateur de chaîne) 'vous donnera' id = 5' dans cette action du contrôleur.Notez également que '\ d' signifie un chiffre ** unique **. Si vous utilisez '~/customer/details/foobarunnecessary-123' et que vous avez toujours la route par défaut à la fin (' {controller}/{action}/{id} '), alors cette route par défaut correspondra et non votre route personnalisée et vous obtiendrez 'id = foobarunnecessary-123' dans votre action de contrôleur. –
L'URL de fin à laquelle nous essayons d'accéder est ~/Person/unusedinfo-42 et le nombre de chiffres varie et peut aller de 1 à 6 ou plus. – rkgallegos