Form コレクションは、POST メソッドを使用してフォームから HTTP 要求本体にポストされた、フォームの各要素の値を取得します。
Request.Form(parameter)[(index)|.Count]
parameter
コレクションが値を取得するフォーム要素の名前を指定します。
index
パラメータの複数の値のうちの 1 つにアクセスできるようにするための省略可能なパラメータです。1 から Request.Form(parameter).Count までの整数値を指定できます。
Form コレクションは、要求本体の中のパラメータ名別にインデックスが付けられます。Request.Form(parameter) の値は、要求本体の中に出現するすべての parameter の値の配列になります。パラメータの値の数は Request.Form(parameter).Count を呼び出して調べることができます。パラメータに関連付けられている値が複数でない場合は、個数は 1 になります。パラメータが見つからない場合には、個数は 0 になります。
複数の値を持つフォーム要素のうちの 1 つの値を参照するには、値を index で指定する必要があります。パラメータ index には 1 から Request.Form(parameter).Count までの値を指定できます。index の値を指定せずに複数のフォーム パラメータの 1 つを参照した場合には、データはカンマで区切られた文字列として返されます。
Request.Form でパラメータを使うと、Web サーバーはその HTTP 要求本体を解析して、指定されたデータを返します。アプリケーションで未解析のフォーム データが必要な場合は、パラメータを指定せずに Request.Form を呼び出すことにより取得できます。
ループを使うとフォーム要求内のすべてのデータ値を解析できます。たとえば、ユーザーがパラメータ FavoriteFlavor に対して Chocolate および Butterscotch という 2 つの値を指定してフォームを完成させた場合、次のようなスクリプトを使ってこれらの値を取得できます。
<% For Each item In Request.Form("FavoriteFlavor") Response.Write item & "<BR>" Next %>
上のスクリプトの表示結果は次のようになります。
Chocolate Butterscotch
次のスクリプトのように For...Next のループを使っても、同じ出力を得ることができます。
<% For I = 1 To Request.Form("FavoriteFlavor").Count Response.Write Request.Form("FavoriteFlavor")(I) & "<BR>" Next %>
このループを使い、次のスクリプトのようにパラメータ名を表示することができます。
<% For Each x In Request.Form %> Request.Form( <%= x %> ) = <%= Request.Form(x) %> <BR> <% Next %>
出力は次のようになります。
FavoriteFlavor = Chocolate
FavoriteFlavor = Butterscotch
次のようなフォームがあるとします。
<FORM ACTION = "/scripts/submit.asp" METHOD = "post">
<P>あなたの名前: <INPUT NAME = "firstname" SIZE = 48>
<P>いちばん好きなアイス クリームの味は何ですか ?: <SELECT NAME = "flavor">
<OPTION>Vanilla <OPTION>Strawberry <OPTION>Chocolate <OPTION>Rocky Road</SELECT>
<p><INPUT TYPE = SUBMIT>
</FORM>
このフォームから次の要求本体が送信されたとします。
firstname=James&flavor=Rocky+Road
次のスクリプトが使えます。
<%= Request.Form("firstname") %> さん、ようこそ。 あなたの好きな味は <%= Request.Form("flavor") %> ですね。
出力結果は次のようになります。
James さん、ようこそ。あなたの好きな味はロッキー ロードですね。
次のようなスクリプトを使ってみます。
未解析のフォーム データ: <%= Request.Form %>
すると、次のような出力が得られます。
未解析のフォーム データ: firstname=James&flavor=Rocky+Road
ClientCertificate、Cookies、 QueryString、 ServerVariables