You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在foreach循环中为Null值显示N/A(ASP.NET Razor)

问题:foreach循环中无法正确显示Null值的N/A替代文本

当前有一段Razor代码,使用foreach循环遍历集合时,当item.Location.Warehouse为Null时,无法正常显示"N/A":

<td>
    @foreach (var item in items) 
    {                                                
        @(item.Location.Warehouse?.Name ?? "N/A")                       
    }
</td>

而未使用foreach的单条数据代码可以正常触发"N/A"显示:

<td>
    @(item.Plant?.Name ?? "N/A")
</td>

解决办法

问题核心是没处理集合为空的场景,以及缺少item.Location的空判断导致潜在异常,按以下方式修改即可:

方式1:显式判断集合+循环内处理属性

<td>
    @if (items == null || !items.Any())
    {
        @("N/A")
    }
    else
    {
        foreach (var item in items)
        {
            // 多一层item.Location的空判断,避免空引用
            @(item.Location?.Warehouse?.Name ?? "N/A")
            // 可选:给多个项添加分隔符,避免内容连在一起
            @if (!items.Last().Equals(item)) { @(", ") }
        }
    }
</td>

方式2:用LINQ简化处理

<td>
    @(items?.Select(item => item.Location?.Warehouse?.Name ?? "N/A")
            .Any() 
        ? string.Join(", ", items.Select(item => item.Location?.Warehouse?.Name ?? "N/A")) 
        : "N/A")
</td>

原代码无效的原因

  1. 若items集合本身为Null或空,foreach循环不会执行,单元格直接为空,不会输出"N/A"
  2. 原代码只判断了Warehouse的空,没判断item.Location的空——如果item.Location是Null,访问item.Location.Warehouse会抛出空引用异常,?? "N/A"根本没机会执行

内容的提问来源于stack exchange,提问作者m.woods

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:50:45