Preferisco:/Commenti/Cerca/3? Sort = autore. La querystring è un buon posto per passare in parametri programmatici, specialmente se il parametro (come in questo caso) non è importante ai fini SEO. Se il parametro avesse un significato semantico come termine di ricerca, il primo URL sarebbe migliore.
In un metodo di controllo si può usare qualcosa di simile:
public ActionResult Search(int id, string sort)
ASP.NET MVC accrediterà automaticamente querystring valori ai parametri del vostro metodo.
Utilizza il seguente percorso
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Comments", action = "Search", id = "" } // Parameter defaults
);
/commenti/Ricerca/3? Sort = autore chiamerà Ricerca (3, "autore")
/Commenti/Ricerca/3 chiamerà Ricerca (3 , null)
Tenete a mente che id è obbligatorio quindi questo url fallirà: /commenti/Ricerca
fonte
2009-06-09 08:48:19
Credo che mi piacerebbe andare per questa soluzione. Come posso instradarlo e impostare un valore predefinito, in quanto sort = 3 è opzionale? – pistacchio
A causa della convenzione sulla configurazione, tieni presente che i tuoi parametri per il tuo metodo DEVONO essere chiamati rispettivamente "id" e "sort". –
In MVC 2 è possibile utilizzare UrlParameter.Optional e nel parametro action usare 'int? id' invece di 'int id' se vuoi che sia facoltativo e'/Comments/Search' per mostrare l'interfaccia utente di ricerca predefinita con testo di input vuoto. – CallMeLaNN