2009-07-11 7 views
1

Comment configurer le routage pour gérer http://mysite.com/Foo?Comment gérer l'URL vide dans ASP.NET MVC

Où foo peut être n'importe quelle valeur. Je veux qu'il aille à/Home/Action/Id où foo est l'identifiant.

Ce sont les applications que j'ai essayé:

 routes.MapRoute("Catchall", "{*catchall}", 
      new { controller = "Home", action = "Index", id=""}); 

     routes.MapRoute("ByKey", "{id}", 
      new { controller = "Home", action = "Index" id=""}); 

Ils ont tous deux généré 404.

Merci pour toute aide.

Répondre

1

Votre deuxième itinéraire est correct. Ça devrait marcher. Peut-être avez-vous d'autres routes ci-dessus? Déboguer vos itinéraires avec Phil Haack's ASP.NET Routing Debugger

+0

Je crois que les tests unitaires font mieux l'affaire. Avez-vous essayé les assistants de test de routage MvcContrib? :) –

+0

Quelque chose comme '" ~/foo ".Route(). ShouldMapTo (x => x.Index (" foo "));' serait intéressant. Vous devriez poster une réponse aussi –

+0

Mais je ne comprends pas comment cela aide David si ce test échoue? –

3

Essayez cette (note que vous aviez une virgule manquante dans votre message original): cependant,

routes.MapRoute("ByKey", "{id}", 
    new { controller = "Home", action = "Index", id=""}); 

Je voudrais, en faire un peu plus d'explication pour éviter des affrontements plus tard, même si elle signifie un URI légèrement plus long:

routes.MapRoute("ByKey", "ByKey/{id}", 
    new { controller = "Home", action = "Index", id=""}); 

Et placez ceci comme première commande MapRoute. L'ordre y est important, et la première route que vous ajoutez est la première route pour laquelle une URL doit être testée.

Questions connexes