ViewModel关联类未实例化引发Object reference空引用异常
解决“Object reference not set to an instance of an object”空引用异常
核心问题
你在View中执行@if (Model.appClassificationTxt.division == "test")时报错,本质是**appClassificationTxt对象本身为null**,而非division属性为空。ViewModel仅定义了该属性但未初始化,且Controller未给它赋值,导致访问其属性时触发空引用。另外,你的ViewModel定义和需求矛盾——你预期返回2条数据,但appClassificationTxt是单个对象,无法存储多条记录。
解决步骤
修正ViewModel定义(适配多数据需求)
将单个对象改为集合类型,同时初始化避免null:public class YourViewModel { // 用List存储多条分类数据 public List<tbl_classification> appClassificationList { get; set; } = new List<tbl_classification>(); }Controller中查询数据库并赋值
从数据库获取division为test1或test2的记录,赋值给ViewModel的集合属性:public IActionResult YourAction() { var viewModel = new YourViewModel(); // 假设_dbContext是你的数据库上下文实例 viewModel.appClassificationList = _dbContext.tbl_classification .Where(c => c.division == "test1" || c.division == "test2") .ToList(); return View(viewModel); }View中遍历集合处理数据
因为是多条数据,需要循环遍历并呈现:@foreach (var item in Model.appClassificationList) { <!-- 可直接使用item,因为查询时已过滤出目标数据 --> <p>应用名称:@item.app_name,分区:@item.division</p> }
补充:若仅需单个对象的处理方式
如果实际只需要单条数据,需确保Controller赋值且View中先判断对象非null:
- Controller赋值:
viewModel.appClassificationTxt = _dbContext.tbl_classification .FirstOrDefault(c => c.division == "test"); - View中判断:
@if (Model.appClassificationTxt != null && Model.appClassificationTxt.division == "test") { // 执行你的逻辑 }
内容的提问来源于stack exchange,提问作者fl13
相关产品推荐
相关产品推荐

