2009-11-20 6 views

Répondre

1

Les routes par défaut dans Global.asax sont configurées pour correspondre à/{controller}/{action}/{id}. Lorsque vous créez le lien d'action avec le code ci-dessus, vous indiquez au routage MVC de configurer une route dont le contrôleur est "Articles", l'action est "Vue" et l'ID est "xxx".

L'URL que vous cherchez est/Articles? View = xx. Dans ce cas, vous dites que vous ne suivez pas le paradigme/{controller}/{action}/{id}. Vous devriez probablement mettre en place un itinéraire statique dans le global.asax comme suit:

routes.MapRoute("Articles", //the name of the route 
    "Articles", // the URL you want to match 
    new { controller = "Articles", action = "Index" }); 

Cependant, gardez à l'esprit que les routes sont testées dans l'ordre où ils sont mis en place, de sorte que vous aurez envie ce près du sommet de la liste. Vous devrez également tester vos autres itinéraires pour vous assurer qu'ils ne sont pas affectés.

Le code pour votre lien d'action serait alors

Html.ActionLink("View this article", "Index", "Articles", new { view = "xx" }, null) 
2

Assurez-vous que le paramètre id ne correspond pas à un itinéraire dans Global.asax. Remplacez id par quelque chose d'autre comme recordId et changez la signature de l'action pour utiliser recordId et non id.

Questions connexes