j'ai le routage par défaut:Impossible de lier au paramètre
routes.MapRoute(
"Shortie", // Route name
"{controller}/{id}", // URL with parameters
new { controller = "Ettan", action = "Index", id = "id" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Ettan", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
J'ai un contrôleur: NewsController. Il a une méthode, comme ceci:
public ActionResult Index(int id)
{
...
}
Si je navigue vers/News/Index/123, cela fonctionne./Nouvelles/123 œuvres. Cependant,/News/Index? Id = 123 ne le fait pas (il ne peut trouver aucune méthode nommée "index" où id est autorisé à être nul). Il semble donc que je manque de compréhension sur la façon dont le routage et le modelbinder fonctionnent ensemble.
La raison de demander est que je veux avoir une liste déroulante avec différentes sources de nouvelles, avec le paramètre "id". Je peux donc sélectionner une source de nouvelles (par exemple "sport", id = 123) et elle devrait être routée vers ma méthode d'index. Mais je n'arrive pas à faire fonctionner ça.
Peut-être que vous devriez juste faire la signature de méthode de cette façon: Index (int? Id)? – Restuta
Oui, et je l'ai résolu pour le moment avec if (! Id.HasValue) {id = int.Parse (Request.QueryString ["id"]); } Mais j'aimerais comprendre pourquoi j'ai besoin de faire ça. –