Je préfère:/Comments/Search/3? Sort = author. La chaîne de requête est un bon endroit pour transmettre des paramètres programmatiques, en particulier si le paramètre (comme dans ce cas) n'est pas important à des fins de référencement. Si le paramètre avait une signification sémantique comme terme de recherche, la première URL serait meilleure.
Dans un procédé de commande vous pouvez utiliser quelque chose comme ceci:
public ActionResult Search(int id, string sort)
ASP.NET MVC câbler automatiquement les valeurs querystring aux paramètres de votre méthode.
Utilisez le itinéraire suivant
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Comments", action = "Search", id = "" } // Parameter defaults
);
/Commentaires/Recherche/3? Type = auteur appellera Recherche (3, "auteur")
/Commentaires/Recherche/3 appellera Recherche (3 , null)
Gardez à l'esprit que id est obligatoire si cette URL échouera: /Commentaires/Recherche
Je pense que je vais pour cette solution. Comment puis-je l'acheminer et définir une valeur par défaut, comme le sort = 3 est facultatif? – pistacchio
En raison de la convention sur la configuration, gardez à l'esprit que vos paramètres pour votre méthode DOIVENT être appelés respectivement 'id' et 'sort'. –
Dans MVC 2, vous pouvez utiliser UrlParameter.Optional et dans le paramètre action 'int? id' au lieu de 'int id' si vous voulez que ce soit optionnel et'/Comments/Search' pour afficher l'interface de recherche par défaut avec un texte d'entrée vide. – CallMeLaNN