Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较两个下拉列表值,如果在其中一个值中进行了选择,但在另一个值中未进行选择,则会引发错误_C#_Asp.net - Fatal编程技术网

C# 比较两个下拉列表值,如果在其中一个值中进行了选择,但在另一个值中未进行选择,则会引发错误

C# 比较两个下拉列表值,如果在其中一个值中进行了选择,但在另一个值中未进行选择,则会引发错误,c#,asp.net,C#,Asp.net,我有两个下拉列表。我需要在第二个选择,如果有在第一个选择 if((ddl1.SelectedIndex > -1 ) != (ddl2.SelectedIndex > -1)) { this.lblError.Visible = true; } 因此,基本上,如果第一个选项中有选择,但第二个选项中没有选择,则会出现错误 它会是下拉菜单吗?它是自己的 <asp:DropDownList ID="ddlRate1" runat="server">

我有两个下拉列表。我需要在第二个选择,如果有在第一个选择

if((ddl1.SelectedIndex > -1 ) != (ddl2.SelectedIndex > -1))
{
    this.lblError.Visible = true;
}
因此,基本上,如果第一个选项中有选择,但第二个选项中没有选择,则会出现错误

它会是下拉菜单吗?它是自己的

      <asp:DropDownList ID="ddlRate1" runat="server">
                   <asp:ListItem Value="">(Select)</asp:ListItem>
                   <asp:ListItem>Initial</asp:ListItem>
                   <asp:ListItem>Moderate</asp:ListItem>
                     </asp:DropDownList>

根据您的评论更新,再次更新

这就是为什么我最初用2个if语句编写它

if((ddl1.SelectedIndex > 0  ) {   

     //code to read value from ddl1

             if (ddl2.SelectedIndex == 0))
            {
                this.lblError.Visible = true;
                // or maybe a bool 'IsValid'  maybe..
            }
}
然后假设整个表单中都有这样的代码,最后您可以

if ( this.lblError.Visible == true) {  // code to handle invalid form }
或者

在if语句之前,尝试此方法解决问题

 this.lblError.Visible = true;
 this.lblError.Text = "ddl1 : " + ddl1.SelectedIndex.ToString() + " ddl2 : " + ddl2.SelectedIndex.ToString();
这几乎只是你所说的翻译,是第一个选项,而不是第二个选项,第一个选项的值大于-1,第二个选项的值不大于-1

您可以通过多种方式重构它,例如使用ddl2.SelectedIndex==-1作为第二个值,但这段代码的内容与您描述的应该如何工作完全相同,而且它确实没有任何问题,因此在我看来这很有价值。

您可以这样做

 <asp:DropDownList ID="ddl1" runat="server">
               <asp:ListItem Value="">(Select)</asp:ListItem>
               <asp:ListItem Value="Initial">Initial</asp:ListItem>
               <asp:ListItem Value="Moderate">Moderate</asp:ListItem>
                 </asp:DropDownList>

改为使用&&怎么样?这不起作用。下拉列表本身可能是问题所在吗?错误标签不可见,只会移动到下一个方法调用。对不起,我无意含糊其辞。它只是像if语句不存在一样运行。@briskovich你在用IE调试吗?这就是我得到的。ddl1:2 ddl2:0,所以ddl2应该在-1上,ddl1应该在-1上开始。这不起作用。我似乎没有评估第二个框。可能是下拉菜单本身吗?你说的“不工作”是什么意思。什么是不应该发生的,或者什么是不应该发生的?错误标签不可见,它只是移动到下一个方法调用。@briskovich以及当时每个下拉列表的选定索引是什么?另外,您在哪里调用代码?您意识到它与c if语句中的ID不同吗?
if((ddl1.SelectedIndex > -1 ) && !(ddl2.SelectedIndex > -1))
{
    this.lblError.Visible = true;
}
 <asp:DropDownList ID="ddl1" runat="server">
               <asp:ListItem Value="">(Select)</asp:ListItem>
               <asp:ListItem Value="Initial">Initial</asp:ListItem>
               <asp:ListItem Value="Moderate">Moderate</asp:ListItem>
                 </asp:DropDownList>
if((ddl1.SelectedValue.Length > 0 ) && (ddl2.SelectedValue.Length == 0))
{
    this.lblError.Visible = true;
}