如何从radiobuttonlist中找到动态创建的所选单选按钮?

时间:2014-03-12 18:30:13

标签: asp.net vb.net nullreferenceexception

嘿,我在网上考试表格中创建了一个带有多项选择题的论文,所以对于这个创建的动态标签和radiobuttonlist,我现在尝试检查用户选择的答案是对还是错所以为此我创建了一个列表其中包含所有radiobuttonlist并列出所有正确答案,当用户按下"提交"按钮 - >

dim answerList as List(Of String)
dim radionButtonList as List(Of RadioButtonList)
 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

    For i As Integer = 0 To radioButtonList.Count - 1
       if String.Compare(radioButtonList(i).SelectedItem.ToString(), answerList(i)) <> 0  than
           MsgBox("Wrong Answer")
       End If
    Next
End Sub

但是当我点击按钮时会出现错误&#34; System.NullReferenceException:对象引用未设置为对象的实例。&#34; 我想当我按下按钮时页面会刷新,所以我知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,我自己想通了它只能使用javascript。所以我在asp.net中编写js代码并在运行时注册它并使用文档模型的两个函数document.getElementById()document.getElementsByTagName()

scriptText &= "function checkRadio(){" + _
                    "var sel = new Array();"
    scriptText &= "for(var i = 1; i <= 3; i++) {" + _
                    "var ele = document.getElementById('MainContent_RadioButtonList' + i);" + _
                    "for(var j = 0; j < 4; j++) {" + _
                    " if(ele.getElementsByTagName('input')[j].checked) { " + _
                    " sel[i] =  ele.getElementsByTagName('input')[j].value; console.log(sel[i]);}}} "
    scriptText &= ""
    scriptText &= "}"
    ClientScript.RegisterClientScriptBlock(Me.GetType(), _
        "CounterScript", scriptText, True)

“MainContent_”是我的内容持有者,所以如果你没有内容持有者你可以简单地把“RadioButtonList”或者你可以简单地使用getElementsByTagName()但它会给你带有输入标签的对象,如button,textfield,无线电等所以你必须首先检查类型,然后进行处理。