42 votes

ASP.NET MVC: le routage d'url vs querystring

J'ai une page routé comme /Comments/Search/3 où j'ai rechercher et d'afficher tous les commentaires de la fil de "3".

Je vais ajouter une fonction de tri (date, auteur, etc). Quelle est la meilleure façon de le gérer? /Comments/Search/3/Sort/Author ou /Comments/Search/3?sort=author ?

Comment puis-je gérer automatiquement la chaîne de requête de tri=auteur en tant que paramètre dans MVC?

Merci

59voto

Praveen Angyan Points 6232

Je préfère: /Commentaires/Recherche/3?tri=auteur. La chaîne de requête est un bon endroit pour passer dans la programmation des paramètres, en particulier si le paramètre (comme dans ce cas) n'est pas important pour les fins de SEO. Si le paramètre a quelques de sens sémantique comme un terme de recherche, la première URL serait mieux.

Dans une méthode de contrôleur, vous pouvez utiliser quelque chose comme ceci:

public ActionResult Search(int id, string sort)

ASP.NET MVC automatiquement le fil jusqu'querystring des valeurs aux paramètres de votre méthode.

Utilisez le parcours suivant

routes.MapRoute(
                   "Default",                                              // Route name
                   "{controller}/{action}/{id}",                           // URL with parameters
                   new { controller = "Comments", action = "Search", id = "" }  // Parameter defaults
               );

/Commentaires/Recherche/3?tri=l'auteur d'appel de Recherche(3, "l'auteur")

/Commentaires/Recherche/3 appel de Recherche(3, null)

Gardez à l'esprit que l'id est obligatoire pour cette url ne fonctionne pas: /Commentaires/Recherche

20voto

Mehrdad Afshari Points 204872

ASP.NET MVC va gérer automatiquement dans la chaîne de requête cas. Il suffit d'ajouter un string sort paramètre de votre action.

Qui est le meilleur? Personnellement, j'utilise le chemin d'accès pour contrôler le contenu affiché et querystring de contrôle de la présentation (mode d'affichage, mise en forme, ...). Donc, pour le tri, j'irais avec la méthode querystring. Mais je ne pense pas qu'il y a un désavantage technique dans l'une ou l'autre approche.

2voto

Steve Fenton Points 55265

Votre meilleur pari est d'ajouter une règle de routage pour le manipuler. Il y a une pratique de l'article sur le sujet ici:

http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2

Ensuite, votre URL de lecture /Commentaires/Recherche/3/Tri/Auteur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X