2010-12-11 3 views
0

J'ai la route suivante: {param1}/{param2}/{param3} et je veux lier à l'action qui n'a pas de paramètre param1 (peu importe). Si je ne définis pas simplement le paramètre param1 dans la méthode d'action, route ne sera pas choisi par ASP.NET MVC. Donc maintenant je dois définir le paramètre param1 dans l'action et ne pas l'utiliser.ASP.NET MVC ignore la valeur de la route

Est-il possible d'ignorer certaines valeurs de route pour ne pas avoir à les définir dans les méthodes d'action?

Répondre

0

Pourquoi ne pas vous réorganisez vos paramètres afin qu'il va:

 routes.MapRoute(
      //// Route name 
      "myNewRoute", 
      //// URL with parameters 
      "{param2}/{param3}/{param1}", 
      //// Parameter defaults 
      new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty, param1 = string.Empty }); 

Maintenant, si vous fournissez uniquement les deux premiers paramètres, il faut param2 et param3. param1 par défaut à string.empty.

Si vous fournissez les trois paramètres, alors param1, param2 et param3 auront tous des valeurs.

+0

Étant donné les deux réponses que j'ai fournies, je préfère celle-ci pour sa simplicité. – MedicineMan

0

Une deuxième approche serait d'utiliser un 2 MapRoutes. Notez que j'ai ajouté "Personnalisé" à la route ici, afin de garantir que le moteur de routage peut différencier cette route et les routes qui prennent trois paramètres et doivent aller à la route asp mvc par défaut.

J'ai également placé Route1 avant Route2 de sorte que le moteur de routage, s'il voit 2 paramètres, préférerait cette route sur Route2. Si vous fournissez 3 paramètres, l'itinéraire préférera Route2 sur Route1 ou l'itinéraire mvc par défaut.

routes.MapRoute(
     //// Route name 
     "Route1", 
     //// URL with parameters 
     "Custom/{param2}/{param3}", 
     //// Parameter defaults 
     new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty }); 


    routes.MapRoute(
     //// Route name 
     "Route2", 
     //// URL with parameters 
     "Custom/{param1}/{param2}/{param3}", 
     //// Parameter defaults 
     new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty, param1 = string.Empty }); 
Questions connexes