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

ASP.NET Razor判断Model属性null时if else报错解决

Razor视图分支判断空引用异常修复方案

报错核心原因

抛出Object reference not set to an instance of an object的根本原因是控制器返回视图时没有传入HomeModel实例,视图绑定的强类型Model对象本身为null,直接访问Model.uname属于对null对象取属性,必然触发空引用。该问题和动作方法添加[HttpGet]/[HttpPost]特性没有关联,特性只负责路由请求匹配,不会自动初始化视图模型。

修复步骤

1. 控制器返回视图时必须传入模型实例

哪怕不需要提前给模型字段赋值,也要初始化一个模型实例传给视图,从根源避免Model为null的问题:

public IActionResult Index()
{
    HomeModel model = new HomeModel();
    // 存在已登录用户信息时可在此处赋值,例如从身份认证凭据、会话中读取用户名
    // model.uname = context.User.Identity.Name;
    return View(model);
}

2. 视图分支逻辑增加空值兜底(推荐)

调整视图的判断逻辑,先校验Model本身非空,再校验uname字段,避免后续漏传模型时直接抛异常:

<li class="nav-item">
    @if (Model != null && Model.uname != null)
    {
        <a class="nav-link changing-color">@ViewBag.username</a>
    }
    else
    {
        <a class="nav-link changing-color" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight" id="login-register">Login / Register</a>
    }
</li>

其他相关问题说明

  • 使用<运算符做布尔判断被标记为语法错误,是因为Razor解析器会优先把<识别为HTML标签的起始标记,只要把C#判断逻辑写在@{}、@if这类明确的Razor代码块范围内,就不会出现解析错误。
  • 如果视图使用强类型模型,务必在视图文件最顶部添加模型声明:@model 你的项目命名空间.HomeModel,否则智能提示和运行时绑定都会出现异常。

内容的提问来源于stack exchange,提问作者エース

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:39:32