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 - 发布到查询字符串(即actionto<form>集合?post=yes

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

选哪一个?

我的首选选项是方法 4——因为它在地址栏中很容易看到正在发生的事情——如果出于某种原因我想避免在 url 中显示这种详细程度,我倾向于使用选项 3,因为它很容易实现,不需要对源表单进行任何更改并且是可靠的。至于其他两种方法:

  • 方法 1——如果我不能 100% 控制服务器,我倾向于避免依赖服务器变量——这没有真正的理由,只是我倾向于使用的一般习惯。
  • 方法 2 – 您可以将隐藏字段替换为始终包含值的另一个字段。
于 2012-05-20T17:03:33.323 回答