如何使用IEnumerable-C#&;空检查@Html.DisplayNameFor;ASP.NETMVC

如何使用IEnumerable-C#&;空检查@Html.DisplayNameFor;ASP.NETMVC,c#,asp.net-mvc,C#,Asp.net Mvc,我不确定是否搜索错误,但我似乎无法确定如何null检查@Html.DisplayNameFor 我有一个IEnumerable,它有一个模型。数字模型。顺序和模型。时间: @Html.DisplayNameFor(Model => Model.Numbers) 等等 我尝试执行此操作,但VS在以下方面抛出错误: 但当我在VS中的红色曲线上悬停时,我得到了这个信息: 表达式树lambda不能包含null传播运算符 我还尝试添加where()和@Html.DisplayNameFor(Mod

我不确定是否搜索错误,但我似乎无法确定如何
null
检查
@Html.DisplayNameFor

我有一个
IEnumerable
,它有一个
模型。数字
模型。顺序
模型。时间

@Html.DisplayNameFor(Model => Model.Numbers)
等等

我尝试执行此操作,但VS在以下方面抛出错误:

但当我在VS中的红色曲线上悬停时,我得到了这个信息:

表达式树lambda不能包含null传播运算符

我还尝试添加
where()
@Html.DisplayNameFor(Model=>Model.Numbers.Any())
,但这些都不起作用

我的代码:

@model IEnumerable
...
@DisplayNameFor(Model=>Model.Numbers)
@DisplayNameFor(Model=>Model.Order)
@DisplayNameFor(Model=>Model.Time)
@foreach(模型中的var项目)
{
if(item.number!=null&&item.Order!=null&&item.Time!=null)
{
@DisplayFor(m=>item.number)
@DisplayFor(m=>item.Order)
@DisplayFor(m=>item.Time)
@ActionLink(“编辑”,“编辑”,新的{id=item.id},新的{@class=“m-numbers\uu-link”})
@使用(Html.BeginForm(“Delete”,“Numbers”,new{id=item.id}))
{
}
}
}
型号:

公共类编号模型
{
公共int ID{get;set;}
公共字符串编号{get;set;}
公共字符串顺序{get;set;}
公共字符串时间{get;set;}
}

您的
@型号是一个。它没有
.number
.Order
,它包含的对象没有

DisplayNameFor()
只需要知道表达式的类型即可从中获取属性
DisplayNameFor
。传递给它的表达式不必计算为对象的非空实例,它不会为其结果执行

所以


@DisplayNameFor(m=>m.First().Numbers)
@DisplayNameFor(m=>m.First().Order)
@DisplayNameFor(m=>m.First().Time)
即使
.Numbers
为空,或者
.First()
为空,或者整个
模型
为空,这也会起作用


将表达式树传递给ASP.NET MVC帮助程序时,通常不需要处理空值。

得到的错误是什么?
表达式树lambda可能不包含空传播运算符。
是当我将鼠标悬停在VS中带有
的红色曲线上时得到的结果。
您可能想要读取接受的答案为此,如果您的
@model
IEnumerable
,那么您肯定不能在这个问题上调用
.Numbers
等。页面上可能有一个循环枚举
Model
,它是传递给lambda的循环变量。我在调用
displayname for
三次之后有一个循环,循环遍历模型并通过
DisplayFor
@Html.DisplayNameFor(Model => Model?.Numbers)