ASP单选按钮空值

时间:2014-02-18 22:23:57

标签: asp-classic

我有一个“编辑”表单,它从特定行中提取数据。此表单的一部分包括单选按钮(一组四个)。我能够从已选择的单选按钮检索数据,但其他三个没有任何东西,我得到一个Null值错误。我怎么能阻止这个?我基本上有一个单元格推入所选单选按钮的值。在我的asp代码中,我设置如下:

<input <%If (CStr((rsCourseNum.Fields.Item("question1Correct").Value)) = CStr("answer1")) Then Response.Write("checked=""checked""") : Response.Write("")%> type="radio" name="question1Correct" id="question1Correct" value="answer1">

如果answer0在db中,这会抛出错误,因为没有answer1,我只是不确定如何设置它以防止它调用空值。

1 个答案:

答案 0 :(得分:2)

什么是Response.Write("")

您没有收到错误,因为您正在检查碰巧为空的db值;你得到一个错误,因为你试图将Null转换为字符串。这有两种 * 方式。方法一是不进行任何数据类型转换:

Response.Write "<input type=""radio"" name=""question1Correct"" id=""q1c"""
If rsCourseNum("question1Correct") = "answer1" Then Response.Write " checked"
Response.Write " value=""answer1""><label for=""q1c"">Question 1</label>"

这将与Null一起使用,因为比较Null = "answer1"将返回Null,这不是True,因此按钮未标记。

另一种方法是显式检查Null,如果值不为null,则只进行数据类型转换。

Response.Write "<input type='radio' name='q" & i & "' id='q" & i & "c'"
If Not IsNull(rs("q" & i)) Then
   If CStr(rs("q" & i)) = CStr(answers(i,0)) Then Response.Write " checked"
End If
Response.Write " value='" & answers(i,0) & "'>"
Response.Write "<label for='q" & i & "c'>" & answers(i,1) & "</label>"

*嗯,两个,呃,“正确”的方式来解决这个问题。还有hacky方式:添加空字符串而不是CStr。 (感谢小费,Lankymart!)

If rs("q" & i) & "" = CStr(answers(i,0)) Then Response.Write " checked"