Request["clé"]
vs Request.Params["clé"]
vs Request.QueryString["clé"]
Quelle méthode utilisez-vous, programmeurs chevronnés? et pourquoi?
Request["clé"]
vs Request.Params["clé"]
vs Request.QueryString["clé"]
Quelle méthode utilisez-vous, programmeurs chevronnés? et pourquoi?
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.
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.
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.
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 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.