C# 可为Null的对象必须在mvc中具有值
当我运行网站时,出现以下错误: System.InvalidOperationException:“可为null的对象必须有一个值。” 我有C# 可为Null的对象必须在mvc中具有值,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,当我运行网站时,出现以下错误: System.InvalidOperationException:“可为null的对象必须有一个值。” 我有Duzenle控制器,包括以下代码: [Authorize(Roles = "Sube")] public ActionResult Duzenle() { var date = DateTime.Now.Date; var kullanici = UserGetter.GetUser(); var subeId = kullanic
Duzenle
控制器,包括以下代码:
[Authorize(Roles = "Sube")]
public ActionResult Duzenle()
{
var date = DateTime.Now.Date;
var kullanici = UserGetter.GetUser();
var subeId = kullanici.SubeId.Value; // exception is thrown here
var kasaRaporu = db.KasaRaporu
.Where(kr => kr.SubeId == subeId).ToList()
.Where(kr => kr.Tarih.Date == date).FirstOrDefault();
if (kasaRaporu != null)
{
return View(kasaRaporu);
}
kasaRaporu = KasaRaporuCreator.Create(subeId);
return View(kasaRaporu);
}
此行中会引发异常:
var subeId = kullanici.SubeId.Value;
怎么了?显然
kullanici.SubeId
是null
。当您尝试访问null
nullable的Value
时,将出现此异常。检查GetUser
方法,确保返回时SubeId
不是null
。显然,kullanici.SubeId
是null
。为什么它是null
如果不知道您的数据库,我们无法判断。@Emrah如果SubeId
为null,您想做什么?如果可以为空,为什么要调用.Value
?如果要将空值传递给。其中(kr.SubeId==SubeId)
根本不要调用.Value
。如果不想执行查询,请使用If(kullanici.SubeId.HasValue){…}
仅在查询有值时执行查询