2016-08-24 2 views
2

Я работаю с checkboxes в MVC. У меня есть таблица с одним столбцом как bit типа. Следующий код дает мне ошибку.Невозможно неявно преобразовать тип 'bool?' to 'bool' Checkbox MVC

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

    ...... 
} 

Выбрано немного типа здесь. и когда я пытаюсь его построить, он говорит:

Невозможно неявно преобразовать тип 'bool?' на "bool". Существует явное преобразование (вам не хватает литого?)

+0

Является ли 'x.Chosen' тип' BOOL? '? –

ответ

1

Ошибка самообслуживания. Ваш x.Chosen: bool? Тип (Nullable<bool>).

Это означает, что вы должны сначала проверить его на null. как это, например:

[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"; 
    } 

    ...... 
} 

Это даже лучше писать так:

[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

Это происходит потому, что поле Chosen обнуляемое в базе данных & это не обнуляемый в вашей модели. Чтобы преодолеть это значение

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

или изменить поле Выбранный в вашей модели как NULL. Для примера.

public bool? Chosen { get; set; } 

, то вы можете просто использовать

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