-6

我对一些嵌套的 if 语句有一点问题。这是它的样子:

if (selectedlocat == "")
{
    if (selectedfield == "")
    {
    }
    else
    {
    }
}
else
{
    if (selectedfield == "")
    {
    }
    else
    {
    }
}

它没有正确遵循“地图”。由于某种原因,它总是转到底部 else 语句中的 else 语句。我知道这一点是因为它在那个区域给了我一个错误,当它甚至不应该到达代码的那部分时。

发生了什么事,我该如何解决?

*编辑

好吧,让我做一点澄清:

它位于剃须刀网页中,因此在遇到错误之前,调试对我没有好处。

这些值真的是空的,我在每个 if 和 else 里面都有一个 foreach

整个故事:

我有一个网站,我可以在其中获取数据,并根据下拉表单有条件地显示它。我认为它在嵌套中的原因是我让它与一个下拉菜单一起工作,但是当我添加第二个下拉菜单时,我必须使它成为有条件的。这是完整的代码:

        @{
           if (selectedlocat == "")
           {
               if (selectedfield == "")
               {
                   foreach (var row1 in db.Query(querypeople + order))
                                    
                    {
                        <tr>
                            <td style="text-align:center; width: 110px">@row1.Last_Name, @row1.First_Name </td>
                            <td>@row1.Firm_Name</td>
                            <td style="text-align:center"><a href="http://@row1.Website">@row1.Website</a></td>
                            <td style="text-align:center">@row1.Phone_Office</td>
                            <td style="text-align:center">@row1.City_Phys</td>
                        </tr>
                    }
                }
                else
                {
                   foreach (var row2 in db.Query(querypeople + where + field + selectedfield + app + order))
                                    
                    {
                        <tr>
                            <td style="text-align:center; width: 110px">@row2.Last_Name, @row2.First_Name </td>
                            <td>@row2.Firm_Name</td>
                            <td style="text-align:center"><a href="http://@row2.Website">@row2.Website</a></td>
                            <td style="text-align:center">@row2.Phone_Office</td>
                            <td style="text-align:center">@row2.City_Phys</td>
                        </tr>
                    }
               }

           }
           else
           {
               if (selectedfield == "")
               {
                   foreach (var row3 in db.Query(querypeople + where + city + selectedlocat + app + order))
                                    
                    {
                        <tr>
                            <td style="text-align:center; width: 110px">@row3.Last_Name, @row3.First_Name </td>
                            <td>@row3.Firm_Name</td>
                            <td style="text-align:center"><a href="http://@row3.Website">@row3.Website</a></td>
                            <td style="text-align:center">@row3.Phone_Office</td>
                            <td style="text-align:center">@row3.City_Phys</td>
                        </tr>
                    }
                }
                else
                {
                    foreach (var row4 in db.Query(querypeople + where + city + selectedlocat + app + and + field + selectedfield + app + order))
                                    
                    {
                        <tr>
                            <td style="text-align:center; width: 110px">@row4.Last_Name, @row4.First_Name </td>
                            <td>@row4.Firm_Name</td>
                            <td style="text-align:center"><a href="http://@row4.Website">@row4.Website</a></td>
                            <td style="text-align:center">@row4.Phone_Office</td>
                            <td style="text-align:center">@row4.City_Phys</td>
                        </tr>
                    }
                }
         
          }
    }
        </tbody>
    </table>
4

2 回答 2

2

如果是去else/else,那么selectedlocat和selectedfield都不等于""。您是否检查过它们是否为空?

于 2013-10-08T08:02:52.483 回答
1

你的逻辑没有错。您可以使用string.Trim()函数删除任何空白字符以防万一。(如果您不想将空格作为零长度字符串)

if (selectedlocat.Trim() == "")
{
    if (selectedfield.Trim() == "")
    { 
    }else{ 
    }
}
else
{
    if (selectedfield.Trim() == "")
    { 
    }else{ 
    }
}

根据您的要求,您还可以使用String.IsNullOrEmpty()String.IsNullOrWhiteSpace()方法

于 2013-10-08T08:10:57.570 回答