web-dev-qa-db-fra.com

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

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

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

70
Chris

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.

114
btlog

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. 

21
Phil

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à.

7
curtisk

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.

4
No Refunds No Returns

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. 

0
cherishty