C# 可为Null的对象必须在mvc中具有值

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

当我运行网站时,出现以下错误:

System.InvalidOperationException:“可为null的对象必须有一个值。”

我有
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){…}
仅在查询有值时执行查询