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

Razor视图空值检查:解决ViewModel产品计数空引用异常

解决产品分类空产品列表的空引用异常问题

嘿,这个问题我之前做项目时也碰到过,确实挺闹心的——当Products列表还没被初始化(也就是处于null状态)的时候,直接调用Count肯定会触发空引用异常。给你几个实用的解决办法,按需选就行:

  • 方法一:用C#空条件运算符+null合并运算符(最简洁推荐)
    把视图里的@item.Products.Count改成下面这样:

    @(item.Products?.Count ?? 0)
    

    简单解释下:?.会先检查item.Products是否为null,如果是null就直接返回null;后面的??会把这个null替换成0,这样不管分类下有没有产品,都能安全显示数量(0或者实际产品数)。

  • 方法二:从ViewModel根源避免null
    直接修改你的ViewModelProductCategory类,在定义Products和OrphanProducts时就初始化空列表:

    public class ViewModelProductCategory {
        public int Id { get; set; }
        public int? ParentId { get; set; }
        public string Title { get; set; }
        public int SortOrder { get; set; }
        public IEnumerable<ViewModelProductCategory> Children { get; set; }
        public List<ViewModelProduct> Products { get; set; } = new List<ViewModelProduct>();
        public List<ViewModelProduct> OrphanProducts { get; set; } = new List<ViewModelProduct>();
    }
    

    这样不管业务层有没有给Products赋值,它都是一个空的List,调用Count自然不会报错,还能保持视图代码的清爽。

  • 方法三:传统三元表达式(兼容旧版C#)
    如果你还在使用不支持空条件运算符的旧版C#,可以用传统的判断逻辑:

    @(item.Products != null ? item.Products.Count : 0)
    

    逻辑很直白:先判断Products是否为null,不为null就取实际Count,否则显示0。

内容的提问来源于stack exchange,提问作者Stian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:41:23