2009-08-25 8 views
2

Comment mapper quelque chose comme domain.com/username? Le problème est que je pense que le routage MVC cherche le contrôleur pour déterminer comment il doit gérer la requête de mappage.asp.net mvc url routing

Je suis assez nouveau pour ASP.NET MVC. Cependant, sur la base des tutoriels jusqu'à présent, le mécanisme de routage semble plutôt rigide.

Répondre

6

En fait, il est assez flexible, je pense que vous trouverez qu'il est assez puissant avec plus d'expérience avec. Voici comment vous pouvez faire ce que vous voulez:

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

Cela choisit un contrôleur par défaut (« Home ») et une méthode d'action par défaut (« indice »), et transmet un paramètre de nom d'utilisateur (qui est réglé sur « » par défaut).

Attention à cet itinéraire, car il correspond à pratiquement n'importe quelle URL que vous pouvez imaginer. Il doit s'agir de la dernière route que vous ajoutez à vos mappages, de sorte que vos autres itinéraires ont d'abord une chance sur l'URL.

1

Pour ajouter à womp - j'aller dans cette voie (jeu de mots):

routes.MapRoute("MyRoute", 
       "user/{username}", 
       new { controller = "User", action = "Index", username = "" }); 

Cela carte urls à: domain.com/user/{username}

Et vous pouvez toujours changer le contrôleur et l'action à tout ce que vous voulez.

1
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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


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

Si j'ai quelque chose comme ça, je suis en mesure de pointer vers quelque chose comme mydomain.com/userid ainsi que mydomain.com/home/index/1. Cependant, si je vais juste à mydomain.com, il va à la page utilisée pour l'ID utilisateur, ce qui est logique, car il correspond à la première règle d'itinéraire et pense que l'ID est "", mais comment arrêter ce comportement?

+0

l'ordre des routes est l'ordre dans lequel elles sont vérifiées. Donc le moins important devrait venir en dernier. Thats celui appelé MyRoute. Déplacez-le ci-dessous itinéraire par défaut. – BerggreenDK