-6

ネストされた if ステートメントに少し問題があります。これは次のようになります。

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

「地図」を正しくたどっていません。なぜか一番下のelse文の中のelse文に必ず行きます。コードのその部分に到達することさえ想定されていなかったときに、その領域でエラーが発生するため、これを知っています。

どうすれば修正できますか?

*編集

わかりましたので、少し説明させてください。

それはかみそりのWebページにあるので、エラーが発生するまでデバッグしても役に立ちません。

値は本当に空です。if と else のそれぞれに foreach があります。

一部始終:

データを取得する Web サイトがあり、ドロップダウン フォームに基づいて条件付きで表示します。入れ子になっていると思う理由は、1つのドロップダウンで動作していたからですが、2つ目を追加したときに条件付きにする必要がありました。完全なコードは次のとおりです。

        @{
           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

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 に答える