2017-05-25 1 views
0

Je dois être capable de gérer un itinéraire comme celui-ci: MyController/ElementType Pour cela, j'ai créé un itinéraire personnalisé comme ceci:Différencier le routage MVC pour {Contrôleur}/paramètre à {Contrôleur}/{action}? Param = myvalue

context.MapRoute(
        "NameOfTheRoute", 
        "MyPath/{controller}/{elementType}", 
        new { controller = "Elements", action = "Create" } 
       ); 

Et cela fonctionne très bien, le problème est quand j'ai une route comme /MyPath/Elements/GetElementType?elementType=fire88

GetElementType est une autre action, mais il va à l'action Create à cause de la route personnalisée que je déclarais avant , comment puis-je savoir le r sortie, ils sont des actions différentes?

Répondre

1

la raison pour laquelle il va cette route parce que vous ne définissez pas d'route pour gérer action si MyPath/{controller}/{elementType} signifie après le nom de controller tout sera considéré comme {elementType} si vous devez créer une autre voie qui se chargera action

routes.MapRoute(
    "MyPathRouteWithAction", 
    "MyPath/{controller}/{action}/{elementType}", 
    new {controller = "Elements", action = "Create"} 
); 

routes.MapRoute(
    "NameOfTheRoute", 
    "MyPath/{controller}/{elementType}", 
    new {controller = "Elements", action = "Create"} 
); 

la première custom route se chargera routs comme /MyPath/Elements/GetElementType/fire88

+0

dans mon cas l'url n'est pas '/ MyPath/Elements/GetElementType/fire88', i s aiment '/ MyPath/Elements/GetElementType? elementType = fire88'. Ce que j'ai fait pour le moment est de créer un lien qui exécute l'action comme ceci: 'link 1' et de modifier la route 'default', juste changé' id' en 'elementType' et maintenant ça marche mais je ne suis pas c'est sûr que c'est la meilleure façon ... – AlexGH

+0

@AlexGH vous devriez utiliser 'link 1' ' – Usman

+0

J'essayais de cette façon d'abord: link 1 mais je recevais l'URL comme suit:'/MyPath/Elements/GetElementType? elementType = fire88' Je n'ai probablement pas mis à jour correctement le navigateur car j'ai réessayé maintenant et je travaille comme ça, merci – AlexGH