フォームが送信された後、特定のフィールドが存在するかどうかをサーバー側で確認するにはどうすればよいですか? 例えば:
If [Exists] Request("FieldName") Then
...
End If
フォームが送信された後、特定のフィールドが存在するかどうかをサーバー側で確認するにはどうすればよいですか? 例えば:
If [Exists] Request("FieldName") Then
...
End If
空でないかどうかを確認します。いくつかの異なる方法がありますが、より頻繁に使用されているのは次のようなものです。
If Request("FieldName") <> "" Then
'etc.
End If
コンテキストに応じて変数をどちらか一方から取得している可能性がある場合は、通常、次のコードのいずれかのバリエーションを使用してForm
およびコレクションを明示的にチェックします。QueryString
Select Case True
Case Request.Form("FieldName") <> ""
'Run if the Form isn't empty
Case Request.QueryString("FieldName") <> ""
'Run if the QueryString isn't empty
Case Else
'Set a predefined default if they're both empty
End Select
またはネストされた If ... Then:
If Request.Form("FieldName") <> "" Then
'Run if the Form isn't empty
ElseIf Request.QueryString("FieldName") <> "" Then
'Run if the QueryString isn't empty
Else
'Set a predefined default if they're both empty
End If
どのコレクションからのものか正確にわかっている場合は、そのコレクションを具体的に確認します。その理由は、期待するところから期待するものを引き出していることを確認したいからです。期待していないときにForm
何かを送信して、誰かが値を上書きしたくありません。QueryString
MSDNから:
指定された変数が上記の 5 つのコレクションのいずれにもない場合、Request オブジェクトは EMPTY を返します。
コレクション名なしで Request(variable) を呼び出すことにより、すべての変数に直接アクセスできます。この場合、Web サーバーは次の順序でコレクションを検索します。
- クエリ文字列
- 形
- クッキー
- クライアント証明書
- サーバー変数
同じ名前の変数が複数のコレクションに存在する場合、Request オブジェクトはオブジェクトが検出した最初のインスタンスを返します。
コレクションのメンバーを参照するときは、完全な名前を使用することを強くお勧めします。たとえば、Request.("AUTH_USER") ではなく、Request.ServerVariables("AUTH_USER") を使用します。これにより、サーバーはアイテムをより迅速に見つけることができます。
パラメータが存在するかどうかを (その値を気にせずに) チェックするには、次のように書くこともできます。
fieldValue = Request("FieldName")
if Not IsEmpty(fieldValue) ...
上記の Count メソッドに対する利点の 1 つは、フィールド名を再度参照せずに変数をテストできることです。"" のテストに対する利点は、値を割り当てずに &FieldName を渡すと、"" のテストでは true が返されるが、IsEmpty では false が返されることです。
編集:これは IIS では信頼できないことが判明しました。
私は通常、SUBMIT ボタンの値を確認します。クリックされた場合は、その値がフォーム データとともに投稿されます。したがって、すべてのフォーム データが空白であっても、送信ボタンの値は空白になりません。送信ボタンの値が空白の場合は、クリックされていません。
if request("btn_Submit") <> "" Then
response.write "form was submitted"
end if
javascript の form.submit() 呼び出しを使用している場合、これはより困難です。この場合、通常は隠しフィールドを選択します。