13

ASP クラシックでフォームを設定していますが、送信後にリロードされます (アクション セルフ)。

今回は前回の投稿の結果が表示されているのですが、POST の投稿が行われたことを確認するにはどうすればよいでしょうか。

PHPのように:

if($_POST['submit']) {
  show results...
}
4

1 に答える 1

33

いくつかのオプションがあります:

方法 1 - リクエスト方法を確認します。

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    'Show Results...
End If

方法 2 - 非表示のフィールドに値をフォームに追加し、その値が投稿されているかどうかを確認します。

If Request.form("HiddenValue") = "1" Then
    'Show Results...
End If

方法 3 - request.form コレクションにアイテムが含まれているかどうかを確認します。

If Request.Form.Count > 0 Then
    'Show Results...
End If

方法 4 - クエリ文字列に投稿する (つまりaction<form>toのセット?post=yes)

If Request.QueryString("post") = "yes" Then
    'Show Results...
End If

どれを選ぶ?

私が好むオプションは方法 4 です。これは、何が起こっているかをアドレス バーで簡単に確認できるためです。何らかの理由でこのレベルの詳細を URL に表示したくない場合は、実装が簡単なオプション 3 を使用する傾向があります。ソースフォームを変更する必要がなく、信頼性があります。他の 2 つの方法については、次のとおりです。

  • 方法 1 – サーバーを 100% 制御できない場合は、サーバー変数に依存することを避ける傾向があります。これを正当化する理由はありません。私がよく使用する一般的な習慣です。
  • 方法 2 – 非表示フィールドを、常に値を含む別のフィールドに置き換えることができます。
于 2012-05-20T17:03:33.323 に答える