web-dev-qa-db-ja.com

Request.FormとRequest.QueryStringの違いは?

Request.FormRequest.QueryStringの正確な違いを教えてもらえますか?

私は一つの違いを知っています

HTTPリクエストメソッドがPOSTの場合、ユーザーが送信したデータはRequest.Form()コレクションにあります

HTTPリクエストメソッドがGETの場合、ユーザーが送信したデータはRequest.QueryString()コレクションにあります

他の違いは?そしてどんな例でも大歓迎です。

14

Request.Formデータはhttpリクエスト本文に投稿されますが、QueryStringではデータはURLを介して送信されます。

21
Adil

他の違いが見つかりました

Request("id") 

最初に見つけようとします

Request.Form("id") 

その後

Request.Querystring("id") 

その後

Request.Cookies("id") 

そして最後に

Request.ServerVariables("id") 

より効率的で読みやすいので、可能であれば明示的な命名規則を使用することをお勧めします。また、最初のヒットが行われた後にシステムが停止するため、情報がどこから来ているかを確認できます。..情報の場所を指定すると、システムの速度も向上します。

詳細については、このリンクを参照してください。

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

しかし、誰もが他の違いを知っている、私はそれを本当に感謝しています。

14

MSDNで述べたように、

Request.Form ):Request.Form(element)の値は、リクエストの本文で発生するelementのすべての値の配列です。パラメータの値の数を確認するには、Request.Form(element).Countを呼び出します。パラメータに複数の値が関連付けられていない場合、カウントは1です。パラメータが見つからない場合、カウントは0です。

および( Request.QueryString ):Request.QueryString(parameter)の値は、QUERY_STRINGで発生するパラメーターのすべての値の配列です。パラメータの値の数を確認するには、Request.QueryString(parameter).Countを呼び出します。変数に複数のデータセットが関連付けられていない場合、カウントは1です。変数が見つからない場合、カウントは0です。

だから、注意すべきことがいくつかあります:

ページの一般的なフォームには、いくつかの非表示要素を含めることができます。

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

非表示の要素(メモリが機能する場合)は、QueryStringに表示されません。したがって、Request.QueryStringに表示されないものがあると思います。残念ながら、私は新しいマシンに開発アプリを再インストールする過程にあり、現時点ではこれをテストできませんが、私が正しい場合は、フォームをPOSTすると、フォームとその内容の詳細が表示されます送信されました。また、QueryStringにアクセスすると、URL全体を構成するものだけが表示されます。例:

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

7

Request.Form-投稿されたフォームの値を取得することを意味します。

Request.QueryString-クエリ文字列で渡された値を取得することを意味します。

4
vikky

Request.Form()

  • Formコレクションは、HTTPリクエストの本文に投稿されたフォーム要素の値を取得します。フォームに存在する要素と値のみを取得します。

Request.QueryString()

  • QueryStringコレクションは、HTTPクエリ文字列内の変数の値を取得します。ここで、フォームに存在しないイベント変数のカスタム変数と値を追加できます。
2
H. Mahida