Demande[“clé”] vs Demande.Params[“clé”] vs Demande.QueryString[“clé”]
Request["key"]
vs Request.Params["key"]
vs Request.QueryString["key"]
Quelle méthode avez-vous des programmeurs chevronnés utiliser? et pourquoi?
Vous devez vous connecter pour publier un commentaire.
Je recommande
Request.QueryString["key"]
. Il n'y a pas beaucoup de différence àRequest["Key"]
pour une chaîne de requête, mais il y a une grande(re) différence si vous essayez d'obtenir la valeur d'ServerVariables
.Request["Key"]
recherche une valeur dansQueryString
si la valeur est null, il ressemble àForm
, puisCookie
et enfinServerVariables
.À l'aide de
Params
est la plus coûteuse. La première demande à params crée un nouveauNameValueCollection
et ajoute chaqueQueryString
,Form
,Cookie
etServerVariables
à cette collection. Pour la deuxième demande, il est plus performant queRequest["Key"]
.Avoir dit que la différence de performances pour un couple de touches est assez négligeable. La clé ici est le code devrait montrer l'intention et à l'aide de
Request.QueryString
il ressort clairement de ce que votre intention est.Je préfère utiliser
Request.QueryString["key"]
car il aide le code-lecteur de savoir exactement où vous êtes l'obtention de données à partir. J'ai tendance à ne pas utiliserRequest.Params["key"]
, car il pourrait se référer à un cookie, chaîne de requête et de quelques autres choses; ainsi, l'utilisateur a à réfléchir un peu. Le moins de temps quelqu'un a besoin de savoir ce que vous pensez, plus il est facile de maintenir le code.where
les données proviennent. C'est bien d'utiliserRequest.Params["key"]
tant que vous ne se soucient pas si ça vient de la chaîne de requête ou d'ailleurs.HttpRequest.Params
ouRequest.Params
obtient à peu près tout (une chaîne de requête, un formulaire, un cookie de session et des variables) de la httprequest, alors queRequest.Querystring
seulement tirer la querystring... tout dépend de ce que vous faites à l'époque.J'ai toujours spécifier explicitement la collection. Si pour une raison quelconque vous souhaitez autoriser les remplacements, code le "get" pour chacun et écrire quelques claire de code qui montre votre hiérarchie pour le choix de l'un sur l'autre. IMO, je n'aime pas l'obtention d'une valeur à partir de plusieurs sources sans d'entreprise clair raison pour le faire.
Comme un gentil avis, Si vous définissez requestValidationMode="4.5" sous web.config, à la fois Demande.QueryString[“clé”] et Demande[“clé”] utilisera le "lazy loading" le comportement de la conception.
Toutefois, en quelque sorte Demande.Params[“clé”] va encore déclencher la validation que le comportement de 4.0 .
Ce comportement étrange vraiment me confond pour une longue période de temps.