在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
)
好吧,当你在进行null检查时,@Model也可能是null。
这里真正的问题是您的底层数据结构没有得到很好的定义。考虑到您只想显示TopicName,您最好在控制器中进行所有检查,然后在视图中只显示@Model.TopicName,而不是在ViewBag中嵌入传递变量并在view中嵌入逻辑。