如何检查表单提交ASP经典

Th3*_*ist 10 forms post asp-classic

我正在ASP经典中设置一个表单,它会在提交后重新加载(动作自我)

但是这次它显示了先前提交的结果,那么如何检查已提交POST提交?

像PHP一样:

if($_POST['submit']) {
  show results...
}
Run Code Online (Sandbox Code Playgroud)

Hea*_*ore 28

你有几个选择:

方法1 - 检查请求方法:

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    'Show Results...
End If
Run Code Online (Sandbox Code Playgroud)

方法2 - 使用值向表单添加隐藏字段,然后检查该值是否已过帐:

If Request.form("HiddenValue") = "1" Then
    'Show Results...
End If
Run Code Online (Sandbox Code Playgroud)

方法3 - 检查request.form集合是否包含项目:

If Request.Form.Count > 0 Then
    'Show Results...
End If
Run Code Online (Sandbox Code Playgroud)

方法4 -邮政查询字符串(即一套action<form>?post=yes)

If Request.QueryString("post") = "yes" Then
    'Show Results...
End If
Run Code Online (Sandbox Code Playgroud)

哪一个选?

我喜欢的选项是方法4 - 因为它在地址栏中很容易看到发生了什么 - 如果由于某种原因我想避免在网址中显示这种级别的细节,我倾向于使用选项3,因为它很容易实现,不需要对源表单进行任何更改并且可靠.至于其他两种方法:

  • 方法1 - 如果我没有100%控制服务器,我倾向于避免依赖服务器变量 - 没有真正的理由,只是我倾向于使用的一般习惯.
  • 方法2 - 您可以将隐藏字段替换为始终包含值的另一个字段.

  • FWIW,我会推荐方法1.对于你无法控制的服务器上的奇怪FUD是不合理的,如果你不能相信服务器做这样基本的事情那么你应该找到一个不同的主机.`REQUEST_METHOD`变量用于检测正在使用哪种HTTP方法.方法2和方法4要求开发人员使用不必要的内容污染他们的代码,以便在有替代方案时应避免使用IMO.方法4也是一种非常好的方法,但缺乏方法1的目的明确. (5认同)