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
相关产品推荐
相关产品推荐

