Ответ 1
В вашем классе uzytkownikModel свойства, которые могут быть nullable, должны быть объявлены как "int?" или "десятичной?" вместо "int" и "decimal".
В этом запросе у меня есть 3 записи (int- (telefon = d.telefon), decimal- (pesel = d.pesel), decimal- (nip = d.nip)) другие записи являются строками.
public ActionResult detail(int LoginID)
{
var user = (from d in baza.uzytkowniks
where LoginID == d.LoginID
select new uzytkownikModel {
imie = d.imie,
nazwisko = d.nazwisko,
telefon = d.telefon,
pesel = d.pesel,
nip = d.nip,
email = d.email,
adres_zamieszkania = d.adres_zamieszkania}).ToList();
ViewBag.daneuser = user;
return View();
}
И у меня есть ошибка:
Невозможно неявно преобразовать тип 'int?' to 'int'. Явное преобразование существует (вам не хватает роли?)
и еще две ошибки с "десятичным?" вместо этого 'int?'.
Модель:
public class uzytkownikModel
{
[Required]
public string imie { get; set; }
[Required]
public string nazwisko { get; set; }
public decimal pesel { get; set; }
public decimal nip { get; set; }
public string adres_zamieszkania { get; set; }
public int telefon { get; set; }
public string email { get; set; }
}
Только imie и nazwisko являются неотъемлемыми, остальные имеют значение null
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Теперь работаем. Я меняю модель:
decimal to decimal?
и
int to int?
Спасибо всем за помощь
В вашем классе uzytkownikModel свойства, которые могут быть nullable, должны быть объявлены как "int?" или "десятичной?" вместо "int" и "decimal".
Вам нужно будет опубликовать больше кода, чтобы получить окончательный ответ, но где-то одна из ваших переменных имеет значение NULL, и для присвоения ему типа с нулевым значением вам нужно сделать .Value
.
Например, если ваш объект d property imie
равен Nullable<int>
, и именно это вызывает вашу проблему, вы можете сделать это:
imie = d.imie.Value
Вам также понадобятся случаи, когда d.imie
имеет значение NULL. Например:
imie = d.imie.HasValue ? d.imie.Value : 0
Или, если вам нравится??? оператор (который вычисляет первое ненулевое значение):
imie = d.imie ?? 0
(Я просто использую d.imie
в качестве примера - недостаточно кода, посланного для pintpoint, точная проблема.)
int?
- это Nullable<int>
. Поскольку столбцы базы данных могут быть пустыми, отображаемые свойства являются Nullable.
Рассмотрим этот код, который присваивает значения int?
переменным int
.
int? w = 2;
int? x = null;
int y = w ?? 3;
int z = x ?? 4;