我试图找到一种方法来在用户未在下拉列表中选择值时抛出错误。我尝试了很多解决方案,这里提供了。但似乎没有工作。这是我的代码
protected void Button1_Click(object sender, EventArgs e)
{
if (RadioButtonList1.SelectedItem.Value == null)
{
//Throw error to select some value before button click
}
if (RadioButtonList1.SelectedItem.Value == 'male')
{
//Step1
}
if (RadioButtonList1.SelectedItem.Value == 'female')
{
//Step2
}
}
尝试用
替换 if (RadioButtonList1.SelectedIndex == -1)
但这也行不通。有什么想法吗?
答案 0 :(得分:1)
评论报价:
(rakesh)只有在选择了radiobutton时执行才能执行代码,当用户点击而没有选择时我得到错误 - 对象引用未设置为对象的实例...而且没有" RadioButtonList1。 SelectedItem.Value" == null不起作用
这是你的方式!出错的原因是: RadioButtonList1.SelectedItem 为空。所以没有值。所以:请检查
if (RadioButtonList1.SelectedItem == null) {...}
编辑以澄清讨论:
if (RadioButtonList1.SelectedItem == null)
{
//Throw error to select some value before button click
}
else if (RadioButtonList1.SelectedItem.Value == "...")
{
....
}
答案 1 :(得分:0)
如果将所选项目放入变量,您将更容易调试:
var selectedItem = RadioButtonList1.SelectedItem;
if (selectedItem == null)
{
throw new Exception("Please select");
}
else if (selectedItem.Value == "male")
{
// step 1
}
单选按钮是特定的。如果未选择任何内容,则没有selectedItem,因此没有不存在的对象的值。
编辑:将调试器点放在第一行,var selectedItem = ..这样你就可以在悬停时知道它具有的确切值。
Edit2:始终检查您的对象是否为空。注释中的错误是由于当实际对象不存在时您立即尝试访问对象属性这一事实。