Request.Form有时会返回复选框的值,其他时候则不会

时间:2009-01-12 19:06:05

标签: asp-classic

有人知道这有什么问题吗?我有一些经典ASP代码,用于检查复选框的值,如下所示:

<!-- HTML page: page1.asp --->
<input id="useBilling" name="useBilling" value="Y" type="checkbox" />

在我的代码页中(我们称之为page2.asp):

' code

useBilling = Request.Form("useBilling")

' useBilling should be "Y" here

If useBilling = "Y" Then
    ' using billing info
Else
    ' not using billing info
End If

问题在于,有时候,即使我选中复选框,它也会将空字符串传递给Request.Form,并且正在执行错误的代码。我已经放置了几个Response.Write调用来跟踪它(这是VBScript,请记住),有时它会说值为“Y”但后来当我检查条件中的值时,它是空的。

一直在捣乱我的大脑试图弄清楚为什么这不起作用,因为一切似乎都是正确的,只是Request.Form有时会捡到价值,有时却没有,即使它被检查了。地狱,有时我会通过注释执行代码来测试它,它会说值为“Y”然后当我取消注释执行代码时,它再次神秘地为空。

编辑:奇怪的是,如果我在条件中包含一个Response.End标记,它将按照我的预期运行,但是当我删除Response.End时它不再找到复选框的值(返回空)即使一分钟前(使用Response.End取消注释),它会输出一条测试消息,显示“好的,复选框已被选中”。在Response.End注释掉后,它显示“未选中复选框”。

我甚至尝试输出复选框的值(如果已选中则应为“Y”,如果不是则为“Y”)。并且,确实如果条件包括Response.End它将输出“Y”并且如果我删除Response.End,它是空的。

2 个答案:

答案 0 :(得分:3)

  

一直困扰着我的大脑   弄清楚为什么这不是   工作,因为一切似乎   是的,只是Request.Form有时   有时会提升价值   即使经过检查也没有。

不是直接答案,而是完全清楚:如果未选中复选框,则Request.Form(“useBilling”)将始终返回空值。从你的“即使我检查复选框”的措辞,我不太确定你是否在期待未检查时的价值。从你的代码中,我认为你得到它。

关于这个问题,我从来没有见过这种情况,尽管使用ASP超过10年(请杀了我。)这并不意味着你是幻觉,只是我没有看到它。有趣的!

我想知道你的HTML(特别是表格标签)是否可能格格不入。您是否有重叠标签或缺少关闭表格标签或其他什么?

当事情行为不端时,我也非常好奇看到Request.Form的输出,即:

If useBilling = "Y" Then
  Response.Write "Cool, it works!"
Else
  Response.Write "Something's weird. " & Request.Form
End If

答案 1 :(得分:-1)

这应该是正确的,如果您提交表单并取消选中复选框,则其值应为空字符串的值 - 如果选中它,则其值应为“on”