我在Web表单上有一个RadioButtonList和一个提交按钮。当我单击带有RadioButtonList值为空的提交按钮时,即没有从RadioButtonList中选择任何内容时,我得到一个异常:


  对象引用未设置为对象的实例。


这是我到目前为止的代码:

protected void Button2_Click1(object sender, EventArgs e)
{
    //for qstn 1
    con.Open();

    if (RadioButtonList1.SelectedValue == null)
    {
        SqlCommand sqlcmd1 = new SqlCommand("update TEST1 set Your_Answer=NULL where Question='1'", con);
        sqlcmd1.ExecuteScalar();
    }
    else
    {
        string rb1 = RadioButtonList1.SelectedItem.Text;
        SqlCommand cmd1 = new SqlCommand("update TEST1 set Your_Answer='" + rb1 + "' where Question='1'", con);
        cmd1.ExecuteScalar();
    }
}

最佳答案

您可以使用SelectedIndex来检查是否选择了任何元素,因为SelectedValue不会为null,而没有选择任何元素。正如MSDN上关于SelectedItem 所述,“一个ListItem表示从列表控件中选择的最低索引项目。默认值为null”,如果SelectedItem为null,则无法访问Text属性,并且将获得异常。

    if (RadioButtonList1.SelectedIndex == -1)
    {
        SqlCommand sqlcmd1 = new SqlCommand("update TEST1 set Your_Answer=NULL where Question='1'", con);
        sqlcmd1.ExecuteScalar();

    }
    else
    {
        string rb1 = RadioButtonList1.SelectedItem.Text;
        SqlCommand cmd1 = new SqlCommand("update TEST1 set Your_Answer='" + rb1 + "' where Question='1'", con);
        cmd1.ExecuteScalar();
    }}


要么

您可以按照Grant Winney所述在条件中使用SelectedItem而不是SelectedValue。

if (RadioButtonList1.SelectedItem == null)

10-07 14:13