Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查viewbag列表是否为null或空_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 检查viewbag列表是否为null或空

C# 检查viewbag列表是否为null或空,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我无法检查我的列表长度是否为0。如果我删除了or的第二部分,代码就会起作用;仅检查列表是否为空 @{ @if( ViewBag.somelist != null || Enumerable.Count(ViewBag.somelist) == 0) { <p>list not null or empty</p> } @else { <p>list is empty</p>

我无法检查我的列表长度是否为0。如果我删除了or的第二部分,代码就会起作用;仅检查列表是否为空

@{
    @if( ViewBag.somelist != null || Enumerable.Count(ViewBag.somelist) == 0)
    {
        <p>list not null or empty</p>
    }
    @else
    {
        <p>list is empty</p>
    }
}
此外,用于检查列表是否为空的可交换项:
>=0,您应该可以在此处使用,将注释中提到的
&
替换为
&
,因为您正在检查列表是否为空是否为空:

@{
    @if(ViewBag.somelist != null && ViewBag.somelist.Any())
    {
        <p>list not null or empty</p>
    }
    @else
    {
        <p>list is empty</p>
    }
}
@{
@if(ViewBag.somelist!=null&&ViewBag.somelist.Any())
{
列表不为null或空

} @否则 { 列表为空

} }

您可以安全地调用它,因为如果
somelist
为null,执行将永远不会到达该点。

代码的问题是|运算符。对于|运算符,当第一条语句为true或false时,将始终执行第二条语句。在您的例子中,如果ViewBag.somelist为null,第二条语句也将被执行,然后它将抛出ArgumentNullException。要克服此问题,请使用&&代替|。它将充当短路,当第一条语句为真时,只有第二条语句才会执行,否则它的执行将移到下一行。

这只是检查列表是否为空。我的代码已经做到了。我还想检查列表的长度是否等于零,如果不检查列表的长度!=null或列表计数大于0,不等于零。或者,如果(非null且计数>0)我的viewbag是在我的代码行中的某个位置创建的,则会出现这种情况。它并不总是存在。这就是我检查它是否为空的原因。然而,一旦它被创建。如果删除了足够的索引使列表长度为零,我想检查列表是否为空
@{
    @if(ViewBag.somelist != null && ViewBag.somelist.Any())
    {
        <p>list not null or empty</p>
    }
    @else
    {
        <p>list is empty</p>
    }
}