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 });
Étant donné les deux réponses que j'ai fournies, je préfère celle-ci pour sa simplicité. – MedicineMan