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

ASP.NET Core 8.0 MVC中System.NullReferenceException错误排查

问题分析与解决

核心原因

触发System.NullReferenceException的直接原因是创建表单场景下,视图判断逻辑依赖的对象/属性为null,而更新场景下该对象已有赋值,因此可正常运行。

常见排查点与修复方案

1. 模型未实例化

如果创建表单对应的Action未向视图传递实例化的模型对象,视图中直接访问Model.XXX会触发空引用。

  • 错误示例(创建Action代码):
    public IActionResult Create()
    {
        return View(); // 未传递模型,视图中Model为null
    }
    
  • 修复方式:在创建Action中传递空实例模型
    public IActionResult Create()
    {
        return View(new YourModel()); // 实例化模型后再传递至视图
    }
    

2. 判断逻辑缺失空值校验

若视图判断逻辑直接访问模型属性,未先校验Model是否为null,会触发空引用。

  • 错误示例(视图代码):
    <h1>@(Model.Id == 0 ? "创建" : "更新")表单</h1>
    <button type="submit">@(Model.Id == 0 ? "创建" : "更新")</button>
    
  • 修复方式:先校验Model是否为null,再执行逻辑判断
    <h1>@(Model == null || Model.Id == 0 ? "创建" : "更新")表单</h1>
    <button type="submit">@(Model == null || Model.Id == 0 ? "创建" : "更新")</button>
    

3. 可空属性的判断问题

如果模型中用于判断的属性是可空类型(如public int? Id { get; set; }),创建场景下该属性为null,直接判断Model.Id == 0会报错。

  • 修复方式:使用空合并运算符处理可空属性
    <h1>@((Model?.Id ?? 0) == 0 ? "创建" : "更新")表单</h1>
    

快速调试验证

在视图中添加临时调试代码,快速确认Model状态:

<p>调试信息:@(Model == null ? "Model为空" : "Model已实例化")</p>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:02