2010-06-29 13 views
2

Dans ma classe AccountController je donne les résultats suivants:MVC 2.0 Problème de routage - paramètre URL non reconnu

public ActionResult Verification(string userGuid) 
{ 

    Debug.WriteLine(userGuid); 
... 

Dans mon global.asax J'ai:

routes.MapRoute(
    "AccountVerification", 
    "{controller}/{action}/{userGuid}", 
    new { controller = "Account", action = "Verification", userGuid = UrlParameter.Optional } 
); 

Quand je vais à http://localhost/Account/Verification/123 .. theres pas de sortie de débogage ... son ne reconnaît pas le paramètre - qui est mon problème. Je ne sais pas ce que je manque. Je souhaite que ce paramètre soit facultatif ... s'il n'est pas défini, je renvoie une autre vue.

Modifier: Quand je place une Debug.WriteLine("hello world"); dans la fonction de vérification, il ne la sortie de sorte que le routage semble aller à la fonction correcte.

Modifier Encore une fois: Le contrôleur par défaut est toujours présent, mais je ne pense pas que cela frapperait cette route car il utilise un autre contrôleur/l'action

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

Répondre

4

L'itinéraire que vous nous avez donné doit correspondre ceci - quelles autres routes avez-vous définies au-dessus? Il peut être ramassé par un itinéraire différent.

+0

Vous ne savez pas comment il serait récupéré par un autre itinéraire. Theres aucune autre action définie dans mon AccountController avec le nom Verification. Je peux confirmer qu'il touche ma fonction de vérification, juste une chaîne vide pour userGuid. –

+0

Avez-vous laissé la route par défaut dans, qui est {controller}/{action}/{id}, et qui mapperait votre "123" à un "id" paramètres? Si c'est le cas, car il n'est pas défini comme un paramètre de votre méthode, il le transmettra simplement dans les données de route et laissera userGuid vide. –

+0

Oui, la valeur par défaut est là aussi ... mais comme il est défini pour utiliser un contrôleur différent (Home) et une action (Index), j'aurais pensé qu'il ne l'utiliserait pas. –

0

Mettez cette définition en haut et voyez si elle ne fonctionne toujours pas. première étape de débogage des routes

+0

Avez-vous inclus le code? Veuillez le formater pour que je puisse le voir. –

+0

Non, je ne l'ai pas fait. Je ne veux pas mettre votre définition de routage au-dessus de tous les autres que vous avez (si vous en avez). Cela m'a aidé à déboguer un problème plusieurs fois – BritishDeveloper