Quand est-ce que Request.Params et Request.Form diffèrent?

J’ai récemment rencontré un problème où une valeur était nulle si on y accédait avec Request.Form mais très bien si récupérée avec Request.Params. Quelles sont les différences entre ces méthodes qui pourraient en être la cause?

Request.Form n’inclut que les variables publiées via un formulaire, tandis que Request.Params inclut à la fois les variables de formulaire publiées et les variables d’object spécifiées en tant que parameters d’URL.

Request.Params contient une combinaison de QuerySsortingng, Form, Cookies et ServerVariables (ajoutés dans cet ordre).

La différence est que si vous avez une variable de formulaire appelée “key1” qui se trouve à la fois dans QuerySsortingng et Form, alors Request.Params [“key1”] renverra la valeur QuerySsortingng et Request.Params.GetValues ​​(“key1”) renverra un tableau de [valeur de la chaîne de requête, valeur de la forme].

S’il existe plusieurs valeurs de formulaire ou des cookies avec la même clé, ces valeurs seront ajoutées au tableau renvoyé par GetValues ​​(c’est-à-dire. GetValues ​​ne renverra pas de tableau irrégulier).

La raison en était que la valeur que je récupérais provenait d’un élément de formulaire, mais la soumission a été effectuée via un lien + JQuery, et non via un bouton de formulaire de soumission.