web-dev-qa-db-fra.com

Différence entre Request.Form et Request.QueryString?

Certains peuvent-ils me dire la différence exacte entre Request.Form et Request.QueryString?

Je connais une différence, comme

Si la méthode de requête HTTP est POST, les données soumises par l'utilisateur se trouvent dans la collection Request.Form ()

Si la méthode de requête HTTP est GET, les données soumises par l'utilisateur se trouvent dans la collection Request.QueryString ()

toute autre différence? et tout exemple serait grandement apprécié.

14
Ramesh Rajendran

Dans Request.Form les données sont publiées dans le corps de requête http tandis que dans QueryString les données sont envoyées via url.

21
Adil

J'ai trouvé une autre différence

Request("id") 

va d'abord essayer de localiser

Request.Form("id") 

puis

Request.Querystring("id") 

puis

Request.Cookies("id") 

et enfin

Request.ServerVariables("id") 

il est recommandé d'utiliser la convention de dénomination explicite si possible car elle est plus efficace et plus lisible. elle vous permet également d'être sûr d'où proviennent vos informations puisque le système s'arrêtera après le premier hit ... également plus rapide pour le système si vous spécifiez l'emplacement des informations.

et nous pouvons renvoyer ce lien pour plus de détails:

http://www.hanselman.com/blog/ASPNETParamsCollectionVsQueryStringFormsVsRequestindexAndDoubleDecoding.aspx

Mais quiconque connaît une autre différence, je l'apprécie vraiment.

14
Ramesh Rajendran

Comme indiqué sur MSDN,

( Request.Form ): La valeur de Request.Form (element) est un tableau de toutes les valeurs d'élément qui se produisent dans le corps de la requête. Vous pouvez déterminer le nombre de valeurs d'un paramètre en appelant Request.Form (élément) .Count. Si un paramètre n'a pas plusieurs valeurs qui lui sont associées, le nombre est 1. Si le paramètre n'est pas trouvé, le nombre est 0.

et ( Request.QueryString ): La valeur de Request.QueryString (paramètre) est un tableau de toutes les valeurs de paramètre qui se produisent dans QUERY_STRING. Vous pouvez déterminer le nombre de valeurs d'un paramètre en appelant Request.QueryString (parameter) .Count. Si une variable n'a pas plusieurs ensembles de données qui lui sont associés, le nombre est 1. Si la variable n'est pas trouvée, le nombre est 0.

Donc, certaines choses à noter:

Dans un formulaire typique sur une page, nous pouvons inclure certains éléments cachés:

<form method="post">
   <input type="hidden" name="lol" value="cat" />
   <input type="text" />
</form>

Les éléments cachés (si la mémoire est utilisée) ne sont pas affichés dans le QueryString. Donc, je suppose qu'il y a des choses qui n'apparaissent pas dans Request.QueryString. Malheureusement, je suis en train de réinstaller les applications de développement sur une nouvelle machine et je ne peux pas le tester pour le moment mais si j'ai raison, lorsque vous POST un formulaire, plus de détails sur le formulaire et son contenu sont expédié. Et lorsque vous accédez à QueryString, vous ne voyez que les éléments qui composent l'intégralité de l'URL, par exemple:

http://somesite.com/index.html?v=1&NonHiddenElement=lol&ManualValue=hello

7
uSeRnAmEhAhAhAhAhA

Request.Form - signifie que vous souhaitez récupérer les valeurs du formulaire qui a été publié.

Request.QueryString - signifie que vous souhaitez récupérer les valeurs qui ont été transmises sur la chaîne de requête.

4
vikky

Formulaire de demande()

  • La collection Form récupère les valeurs des éléments de formulaire publiés dans le corps de la requête HTTP, uniquement les éléments et la valeur qui existent dans votre formulaire.

Request.QueryString ()

  • La collection QueryString récupère les valeurs des variables dans la chaîne de requête HTTP. Ici, vous pouvez ajouter n'importe laquelle de vos variables et valeurs personnalisées quelle dose d'événement n'existe pas dans votre formulaire.
2
H. Mahida