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

数据无法加载至Model对象,请求排查NullReferenceException解决方案

解决ASP.NET MVC中ProductDetails视图的NullReferenceException错误

错误出现在视图第14行@foreach (var item in Model),核心原因是Model对象为null,无法执行遍历操作。以下是具体分析和解决办法:

一、修复GET请求的ProductDetails方法

当前ProductDetails的GET方法直接返回PartialView(),未传入任何Model,若通过GET请求访问该视图,Model必然为null。修改为传入空集合,确保Model始终有效:

public ActionResult ProductDetails(string ItemId)
{
    var emptyProductList = new List<ShoppingViewModel>();
    return PartialView(emptyProductList);
}

二、确保POST方法返回有效集合

检查Index的POST方法,需保证GetDetails(ItemId)返回的是可枚举集合(如List<ShoppingViewModel>),且不会返回null:

  1. 修正GetDetails方法,查询不到数据时返回空集合而非null:
private List<ShoppingViewModel> GetDetails(string itemId)
{
    // 替换为你的实际数据查询逻辑
    var productData = _db.ShoppingItems.Where(x => x.ItemId.ToString() == itemId).ToList();
    // 兜底返回空集合
    return productData ?? new List<ShoppingViewModel>();
}
  1. 确保控制器内变量正确初始化:
[HttpPost]
public ActionResult Index(string ItemId)
{
    var listOfShoppingCartModels = GetDetails(ItemId);
    return PartialView("ProductDetails", listOfShoppingCartModels);
}

三、视图中添加防御性检查

在视图中先判断Model是否为null或为空,避免直接遍历引发异常:

<div class="container">
   <h2 class="text-center">Product List</h2>
   @if (Model != null && Model.Any())
   {
       foreach (var item in Model)
       {
           <div class="col-md-4" style="border: 2px solid black">
               <div style="text-align: center; border-bottom: 2px solid maroon">
                   <h3>@item.ItemName</h3>
               </div>
               <div>
                   <div class="col-md-8">
                       <img src="@Url.Content(item.ImagePath)" width="150px" height="150px" />
                   </div>
                   <div class="col-md-4" style="text-align: left">
                       <b>@item.Description</b>
                   </div>
               </div>
           </div>
       }
   }
   else
   {
       <p class="text-center">暂无产品数据</p>
   }
</div>

四、确认视图的Model类型声明

确保ProductDetails视图顶部已声明正确的Model类型,否则视图无法识别集合类型:

@model List<WebAppECartDemo.Models.ShoppingViewModel>

(替换为你的项目实际命名空间和类名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:20:39