在lambda表达式的mvc中处理视图中的null值

本文关键字:视图 null 处理 mvc lambda 表达式 | 更新日期: 2023-09-27 18:27:43

当视图中的lambda表达式下面有多个where子句比较日期和时间时,我试图处理null值,但它没有;我无法处理。

@Model.TopicTime
    .Where(x =>
        x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) &&
        x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &&
        x.LectureStartTime.AddHours(1).ToString("hh:mm:s") == @ViewBag.MinTime2)
    .FirstOrDefault()
    .TopicName;

通过空值处理但仍然不起作用,这给了我的错误

中发生类型为"System.NullReferenceException"的异常App_Web_nbl342dp.dll,但未在用户代码中处理

@(Model.TopicTime
    .Where(x => 
        x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) &&
        x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &&
        x.LectureStartTime.AddHours(15).ToString("hh:mm:ss") == @ViewBag.MinTime2)
    .FirstOrDefault()
    .TopicName  == null ? "" : 
  Model.TopicTime
      .Where(x => 
          x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) &&
          x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &&                                        
          x.LectureStartTime.AddHours(1).ToString("hh:mm:ss") == @ViewBag.MinTime2)
      .FirstOrDefault().TopicName
)

在lambda表达式的mvc中处理视图中的null值

好吧,当你在进行null检查时,@Model也可能是null。

这里真正的问题是您的底层数据结构没有得到很好的定义。考虑到您只想显示TopicName,您最好在控制器中进行所有检查,然后在视图中只显示@Model.TopicName,而不是在ViewBag中嵌入传递变量并在view中嵌入逻辑。