70 votes

Request["key"] vs Request.Params["key"] vs Request.QueryString["key"]

Request["clé"] vs Request.Params["clé"] vs Request.QueryString["clé"]

Quelle méthode utilisez-vous, programmeurs chevronnés? et pourquoi?

116voto

btlog Points 2887

Je recommande Request.QueryString["key"]. Il n'y a pas beaucoup de différence avec Request["Key"] pour une chaîne de requête, mais il y a une plus grande différence si vous essayez d'obtenir la valeur de ServerVariables. Request["Key"] cherche une valeur dans QueryString si null, il regarde dans Form, puis Cookie et enfin ServerVariables.

Utiliser Params est le plus coûteux. La première requête à params crée une nouvelle NameValueCollection et ajoute chacun des QueryString, Form, Cookie et ServerVariables à cette collection. Pour la deuxième requête, c'est plus performant que Request["Key"].

Cela dit, la différence de performance pour quelques clés est assez négligeable. L'essentiel ici est que le code doit montrer l'intention et utiliser Request.QueryString permet de clarifier votre intention.

21voto

Phil Points 1032

Je préfère utiliser Request.QueryString["key"] car cela aide le lecteur de code à savoir exactement d'où proviennent les données. Je tends à ne pas utiliser Request.Params["key"] car cela pourrait se référer à un cookie, une chaîne de requête et quelques autres choses ; donc l'utilisateur doit réfléchir un peu. Moins de temps quelqu'un a besoin pour comprendre ce que vous pensez, plus il est facile de maintenir le code.

7voto

curtisk Points 8623

HttpRequest.Params ou Request.Params récupère à peu près tout (querystring, form, cookie et variables de session) de la requête HTTP, alors que Request.Querystring ne récupérera que le querystring... tout dépend de ce que vous êtes en train de faire à ce moment-là.

4voto

Je spécifie toujours explicitement la collection. Si pour une raison quelconque vous souhaitez autoriser les remplacements, codez le "get" pour chacun d'eux et rédigez un code clair montrant votre hiérarchie pour en choisir un par rapport à l'autre. À mon avis, je n'aime pas obtenir une valeur à partir de sources multiples sans raison commerciale claire pour le faire.

1voto

cherishty Points 63

En tant qu'avertissement aimable, si vous définissez requestValidationMode="4.5" sous web.config, à la fois Request.QueryString[“clé”] et Request[“clé”] utiliseront le comportement de "chargement différé" tel que conçu.

Cependant, d'une manière ou d'une autre, Request.Params[“clé”] déclenchera toujours la validation comme le comportement de 4.0.

Ce comportement étrange me confond vraiment depuis longtemps.

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