如何使用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)