【问题标题】:Nullable object must have a value in mvc [duplicate]可空对象必须在 mvc 中有一个值 [重复]
【发布时间】:2018-02-07 10:40:50
【问题描述】:

当我运行网站时,我得到了这个错误:

System.InvalidOperationException: 'Nullable 对象必须有一个值。'

我有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.SubeIdnull。为什么是null,如果不知道您的数据库,我们就无法判断。
  • @Emrah 如果SubeId 为空,你想做什么?如果 .Value 可以为空,为什么要调用它?如果您想将空值传递给.Where(kr.SubeId == subeId),则根本不要调用.Value。如果您不想执行查询,请使用if( kullanici.SubeId.HasValue){...} 仅在有值时执行查询

标签: c# .net asp.net-mvc


【解决方案1】:

显然kullanici.SubeIdnull。当您尝试访问可空的nullValue 时,您将收到此异常。检查GetUser方法,确保返回时SubeId不是null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多