7

フォームが送信された後、特定のフィールドが存在するかどうかをサーバー側で確認するにはどうすればよいですか? 例えば:

If [Exists] Request("FieldName") Then
    ...
End If
4

4 に答える 4

13

空でないかどうかを確認します。いくつかの異なる方法がありますが、より頻繁に使用されているのは次のようなものです。

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") を使用します。これにより、サーバーはアイテムをより迅速に見つけることができます。

于 2013-08-07T19:56:06.400 に答える
1

パラメータが存在するかどうかを (その値を気にせずに) チェックするには、次のように書くこともできます。

fieldValue = Request("FieldName")
if Not IsEmpty(fieldValue) ...

上記の Count メソッドに対する利点の 1 つは、フィールド名を再度参照せずに変数をテストできることです。"" のテストに対する利点は、値を割り当てずに &FieldName を渡すと、"" のテストでは true が返されるが、IsEmpty では false が返されることです。

編集:これは IIS では信頼できないことが判明しました。

  1. ?param のみ、または ?param=¶m2 の URL の場合、IsEmpty(param) は false を返しますが、
  2. ?param¶m2 の URL の場合、IsEmpty(param) は奇妙に true を返します ...
于 2016-01-14T11:08:35.437 に答える
0

私は通常、SUBMIT ボタンの値を確認します。クリックされた場合は、その値がフォーム データとともに投稿されます。したがって、すべてのフォーム データが空白であっても、送信ボタンの値は空白になりません。送信ボタンの値が空白の場合は、クリックされていません。

if request("btn_Submit") <> "" Then
    response.write "form was submitted"
end if

javascript の form.submit() 呼び出しを使用している場合、これはより困難です。この場合、通常は隠しフィールドを選択します。

于 2013-12-31T20:14:35.813 に答える