Request["key"]
vs Request.Params["key"]
vs Request.QueryString["key"]
Quelle méthode utilisez-vous les programmeurs chevronnés? et pourquoi?
Je recommande Request.QueryString["key"]
. Il n'y a pas beaucoup de différence pour 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"]
recherche une valeur dans QueryString
si null, il recherche Form
, puis Cookie
et enfin ServerVariables
.
Utiliser Params
est le plus coûteux. La première demande à params crée une nouvelle variable NameValueCollection
et ajoute chacune des variables QueryString
, Form
, Cookie
et ServerVariables
à cette collection. Pour la deuxième requête, elle est plus performante que Request["Key"]
.
Cela dit, la différence de performance entre deux clés est assez négligeable. La clé ici est que le code doit montrer l'intention et l'utilisation de Request.QueryString
indique clairement votre intention.
Je préfère utiliser Request.QueryString["key"]
car cela aide le lecteur de code à savoir exactement où vous obtenez les données. J'ai tendance à ne pas utiliser Request.Params["key"]
car il pourrait faire référence à un cookie, à une chaîne de requête et à quelques autres choses; alors l'utilisateur doit réfléchir un peu. Moins vous aurez besoin de temps pour comprendre ce que vous pensez, plus il est facile de gérer le code.
HttpRequest.Params
ou Request.Params
obtient à peu près tout (variables de chaîne de requête, de formulaire, de cookie et de session) à partir de la demande http, alors que Request.Querystring
extraira uniquement la chaîne de requête ... tout dépend de ce que vous faites à ce moment-là.
Je spécifie toujours explicitement la collection. Si, pour une raison quelconque, vous souhaitez autoriser les remplacements, codez le "get" pour chacun et écrivez un code clair qui montre votre hiérarchie pour en choisir un sur l'autre. OMI, je n'aime pas obtenir une valeur provenant de plusieurs sources sans motif commercial clair.
Veuillez noter que si vous définissez requestValidationMode = "4.5" sous web.config, Request.QueryString [“key”] et Request [“key”] utiliseront "lazy chargement "comportement comme design.
Cependant, Request.Params [“key”] déclenchera toujours la validation en tant que comportement de la version 4.0.
Ce comportement étrange me déroute vraiment depuis longtemps.