2016-10-20 47 views
-12

hier mein Code ist seine Darstellung der Parameter, die Sie bestanden haben, ist null: -System.ArgumentNullException: Der Wert darf nicht null sein. Parametername: Quelle

[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

erste Format es richtig –

Antwort

1

Sitze null sein wird, wenn Sie die Methode aufrufen, ohne Daten/query Argument übereinstimmen. Sie müssen auch überprüfen, dass, wie so zum Beispiel:

[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

Yup seine Shows Sie ausgewählt haben keine Sitze, während m Sitze Auswahl !! –

+0

@DebashishDwivedi Ja, Sie müssen das Format der Daten überprüfen Sie senden, ist es nicht übereinstimmt. – Lucero

+0

Ich Auswahl Sitze bt seine zeigt u hatten keine Sitze wählen –

0

Die Ausnahme wird angezeigt, weil - wie Lucero bereits erwähnt - Seatsnull ist. Im Gegensatz zu einem üblichen Verfahren eröffnen Sie bitte ein NullReferenceException hier bekommen, weil Count eine Erweiterung-Methode ist:

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

So wie Sie das Verfahren sehen ein ArgumentNullException anstelle eines wirft NullReferenceException wenn source ist null.

Als eine Seite nicht Count verwenden, um zu überprüfen, ob Ihre Sammlung Artikel enthält, verwenden Sie stattdessen Any, da es die vollständige Sammlung nicht aufzählt und zurückkehrt, wenn die allererste übereinstimmende Bedingung gefunden wurde.

EDIT: Wenn Enden Sie über eine andere Methode zu verwenden, die eine normale Instanz-Methode ist jedoch ein Enden Sie NRE erhalten:

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

So prüfen Sie, ob das Argument null, bevor es mit:

[HttpPost] 
public String Indexhome(IEnumerable<Seat> Seats) 
{ 
    if (Seats == null || !Seats.Any(x=> x.IsSelected)) 
     return "you didnt select any seats"; 
} 
Verwandte Themen