Pour soutenir les URL existantes dans mon application, j'utilise une expression régulière pour convertir les URL de la forme /Repo/{ixRepo}/{sSlug}/{sAction}
à la nouvelle forme /Repo/{sName}/{sAction}
, en utilisant le ixRepo
pour obtenir le sName
correct . Cela fonctionne bien, et je peux rediriger l'utilisateur vers la nouvelle URL avec un RedirectResult.Vérifiez qu'une carte d'URL à un itinéraire réel dans ASP.Net MVC
Cependant, je voudrais saisir les URL existantes avec une action non valide avant de rediriger l'utilisateur. Comment puis-je vérifier si une chaîne URL va correspondre à un itinéraire enregistré? MVC le fait clairement en interne pour mapper une requête à l'action correcte, mais j'aimerais le faire à la main.
Jusqu'à présent, je suis venu avec ceci:
var rd = Url.RouteCollection.GetRouteData(new HttpContextWrapper(new HttpContext(
new HttpRequest("", newPath, ""),
new HttpResponse(null))));
qui semble toujours revenir un System.Web.Routing.RouteData
, même pour les mauvaises routes. Je ne peux pas trouver un moyen de vérifier si la route a été acceptée comme un tout attraper, ou si en fait mappage à une route qui est enregistrée sur le contrôleur.
Comment puis-je utiliser le système de routage MVC pour vérifier si une carte d'URL à un contrôleur/action valide par voie recommandée?
(je l'ai vu ASP.NET MVC - Verify the Existence of a Route, mais ce qui est vraiment inélégante. MVC dispose d'un système de routage intégré, et je voudrais l'utiliser.)
Le code lié à l'autre réponse ne vérifie que le jeton 'action' est correct, pas l'ensemble des valeurs de la route (par exemple,' id'). –