[ASP.NET] GETパラメータを取得する

URLの末尾に「?id=001」のように付加される値を
GETパラメータ(クエリ文字列)と言います。
ASP.NETでは、このGETパラメータをRequest.QueryStringで取得できます。

サンプル

例)GETパラメータを取得する

「test.aspx?id=001」というURLでアクセスされた場合、idの値を取得するには次のように記述します。

例)パラメータが存在するかどうかを確認してから取得する

指定したキーがクエリ文字列に存在しない場合、Request.QueryStringはNothingを返します。
値を使う前に、存在するかどうかを確認しておくと安全です。

例)すべてのGETパラメータをキーと値の一覧で取得する

「test.aspx?id=001&name=tanaka」のように複数のパラメータが付いている場合、
AllKeysプロパティでキー一覧をループしてすべての値を取得できます。

例)同じキーが複数指定された値をすべて取得する

「test.aspx?id=001&id=002&id=003」のように同じキーが複数指定されている場合、
Request.QueryString("id")では "001,002,003" のようにカンマ区切りの文字列で返ってきます。
それぞれの値を個別の要素として取得したい場合は、GetValuesメソッドを使用します。

備考

  • Request.QueryStringはNameValueCollection型のため、キーの大文字・小文字は区別されません。
  • 取得できる値は自動的にURLデコードされた状態になっています。日本語などのマルチバイト文字も、URLエンコードされていれば元の文字列として取得できます。
  • POSTされた値を取得したい場合はRequest.Formを使用します。GET・POSTのどちらで送られたかを問わず取得したい場合はRequest.Paramsが使えますが、QueryString・Form・Cookies・ServerVariablesの内容がすべてまとめて含まれる点に注意してください。
  • GETパラメータはURLにそのまま表示され、ブラウザの履歴やアクセスログにも残ります。パスワードなど、他人に見られたくない値を含めるのは避けてください。
  • 取得した値をそのまま画面に表示すると、クロスサイトスクリプティング(XSS)の原因になります。画面に出力する際はServer.HtmlEncodeなどでエスケープしてから表示してください。
  • ASP.NET Core(Razor PagesやMVC)の場合は、Request.Query["id"]で同様にGETパラメータを取得できます。

関連記事

コメント

タイトルとURLをコピーしました