ASP.NET MVC视图中Orders属性显示NULL问题求助
问题原因及解决方法
原Orders方法的核心问题
你创建了orders列表并添加了3条订单数据,但根本没把这个列表赋值给customer.Orders,而且循环里反复设置customer的基本信息(CustomerNumber、FirstName这些)属于冗余操作,完全可以放到循环外面。
重写的Orders1方法的问题
循环里每次都新建CustomerViewModel对象,最后既没把构造好的customer传给View,也没往Orders里添加任何订单数据,自然看不到订单内容。
正确的实现代码
public IActionResult Orders() { decimal iTotal = 55.23M; // 初始化CustomerViewModel时同时实例化Orders列表,避免null CustomerViewModel customer = new CustomerViewModel { CustomerNumber = 111111, FirstName = "John", LastName = "Smith", Orders = new List<CustomerOrderModel>() }; try { for (int i = 1; i < 4; i++) { var order = new CustomerOrderModel { OrderId = i, OrderDate = DateTime.Now, Description = "Part " + i, Total = iTotal }; iTotal += order.Total; // 将生成的订单直接添加到customer的Orders列表中 customer.Orders.Add(order); } return View(customer); } catch (Exception) { return View("Error"); } }
关键修复点
- 初始化
CustomerViewModel时直接实例化Orders列表,从根源避免属性为null。 - 将
customer的基本信息设置移到循环外,消除冗余赋值。 - 生成订单后直接添加到
customer.Orders中(也可以先把订单存到单独列表,最后一次性赋值给customer.Orders,两种方式都有效)。
内容的提问来源于stack exchange,提问作者ANSKY
相关产品推荐
相关产品推荐

