2016-08-24 6 views
2

Ich arbeite mit checkboxes in MVC. Ich habe eine Tabelle mit einer Spalte als bit Typ.Der folgende Code gibt mir einen Fehler.Kann den Typ 'bool' nicht implizit konvertieren? 'bool' Checkbox MVC

[HttpPost] 
public string Index(IEnumerable<City> cities) 
{ 
    if (cities.Count(x => x.Chosen) == 0) 
    { 
     return "You did not select any city"; 
    } 

    ...... 
} 

Gewählt ist hier ein Bit-Typ. und wenn ich versuche, es zu bauen, sagt:

Kann nicht implizit konvertieren Typ 'bool?' "blasen". Eine explizite Konvertierung existiert (fehlt Ihnen ein Cast?)

+0

Ist 'x.Chosen' Art von' Bool? '? –

Antwort

1

Fehler ist selbst erklärend. Ihr x.Chosen ist bool? Typ (Nullable<bool>).

Es bedeutet, dass Sie es zuerst auf null überprüfen sollten. dies wie zum Beispiel:

[HttpPost] 
public string Index(IEnumerable<City> cities) 
{ 
    if (cities.Count(x => x.Chosen.HasValue && x.Chosen.Value) == 0) 
    { 
     return "You did not select any city"; 
    } 

    ...... 
} 

Es ist sogar besser, so zu schreiben:

[HttpPost] 
public string Index(IEnumerable<City> cities) 
{ 
    if (!cities.Any(x => x.Chosen.HasValue && x.Chosen.Value)) 
     return "You did not select any city"; 
    ...... 
} 
0

Es tritt auf, weil das Feld Chosen NULL festlegbare in Ihrer Datenbank ist & es nicht auf NULL festlegbare in Ihrem Modell. Um dieses Problem zu lösen, ändern Sie das Feld, das Sie in Ihrem Modell gewählt haben, als nullbar.

. Für Ex.

public bool? Chosen { get; set; } 

dann können Sie einfach

if (cities.Count(x => x.Chosen) == 0) 
Verwandte Themen