2016-10-20 37 views
-12

私のコードは、そのあなたが合格したパラメータがnull表示されています - あなたは、データ/クエリ引数に一致せずにメソッドを呼び出した場合System.ArgumentNullException:値にnullを設定することはできません。パラメータ名:ここにソース

[HttpPost] 
public String Indexhome(IEnumerable<Seat> Seats) 
{ 
    if (Seats.Count(x => x.IsSelected) == 0) 
    { 
      return "you didnt select any seats"; 
    } 
    else 
    { 
      StringBuilder sb = new StringBuilder(); 
      sb.Append("you selected"); 
      foreach (Seat seat in Seats) 
      { 
       if (seat.IsSelected) 
       { 
        sb.Append(seat.Name + " ,"); 
       } 
      } 
      sb.Remove(sb.ToString().LastIndexOf(","), 1); 
      return sb.ToString(); 
    } 
} 
+0

最初に正しくフォーマットされています –

答えて

1

席はnullになります。ルセロとしてすでに言及 - - Seatsnullであるため、例外が表示されます

[HttpPost] 
public String Indexhome(IEnumerable<Seat> Seats) 
{ 
    if ((Seats == null) || !Seats.Any(s => s.IsSelected)) 
    { 
      return "you didnt select any seats"; 
    } 
    else 
    { 
      return "you selected " + string.Join(", ", Seats.Where(s => s.IsSelected).Select(s => s.Name)); 
    } 
} 
+0

それはあなたが座席を選んでいる間にあなたがどの座席も選択しなかったことを示しています! –

+0

@DebashishDwivediはい、送信しているデータの形式を確認する必要がありますが、一致しません。 – Lucero

+0

私は座席を選択しています。座席を選択していませんでした。 –

0

:あなたはまた、そうのような、たとえば、ことを確認する必要があります。あなたは方法がArgumentNullException代わりsourcenullあるNullReferenceException場合のスロー見るように

public static int Count(this IEnumerable<T> source) 
{ 
    if (source == null) throw new ArgumentNullException("source"); 
} 

Countが拡張メソッドであるため、通常の方法とは対照的に、あなたはここにNullReferenceExceptionを取得するドント。

Countを使用してコレクションにアイテムがあるかどうかを確認する代わりに、Anyを使用してください。完全なコレクションを列挙しないため、最初に一致する条件が見つかったときに戻ります。

EDIT:引数がnullある場合

Seats.DoSomething(); // throws NRE when Seats = null 

だから、それを使用する前に確認してください:

You'dは、およそ通常のインスタンスメソッドは、しかし、NRE取得you'dある別の方法を使用する場合
[HttpPost] 
public String Indexhome(IEnumerable<Seat> Seats) 
{ 
    if (Seats == null || !Seats.Any(x=> x.IsSelected)) 
     return "you didnt select any seats"; 
} 
関連する問題