我有一个“编辑”表单,它从特定行中提取数据。此表单的一部分包括单选按钮(一组四个)。我能够从已选择的单选按钮检索数据,但其他三个没有任何东西,我得到一个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,我只是不确定如何设置它以防止它调用空值。
答案 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"