提问人:Johan 提问时间:11/9/2019 更新时间:11/9/2019 访问量:93
对象引用未设置为对象的实例,model 为 null
Object reference not set to an instance of an object., model is null
问:
我正在尝试显示一个清单,该清单从MySQL数据库获取数据并将其显示在视图中,并更新表中每个元素的变量(IsChecked)的值,无论我们是否检查了便利设施(我正在显示一些便利设施)。视图的模型是 Hotel_5.ViewModel.BookingRoom,其中 BookingRoom 是我创建的自定义模型,我在其中使用了多个模型。我在Model.AmenitiesList.Count()中遇到异常。模型为 null。
这是我的观点
<div class="form-group">
@for (var i = 0; i < Model.AmenitiesList.Count(); i++)
{
@Html.CheckBoxFor(m => m.AmenitiesList[i].IsChecked, new { @class = "form-control" });
<label>@Model.AmenitiesList[i].amenityType</label>
//If you need to hide any values and get them in your post
@Html.HiddenFor(m => m.AmenitiesList[i].AmenityId)
@Html.HiddenFor(m => m.AmenitiesList[i].AmenityPrice)
}
</div>
这是我的 ViewModel
public class BookingRoom
{
public Bookings bookings { get; set; }
public Rooms rooms { get; set; }
public List<Amenities> AmenitiesList { get; set; } = new List<Amenities>();
}
这是我的设施模型
public class Amenities
{
[Key]
public int AmenityId { get; set; }
public double AmenityPrice { get; set; }
public AmenityType amenityType { get; set; }
public bool IsChecked { get; set; }
}
public enum AmenityType
{
tv,
wi_fi,
hair_dryer,
help
}
答:
0赞
Ashkan Mobayen Khiabani
11/9/2019
#1
查询时,也应该包括它,否则它将为 null:AmenitiesList
在控制器中:
var bookingRoom = context.BookingRooms.Include(b => b.AmenitiesList).FirstOrDefault(b => b.Id == someId);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
请注意,我查询的可能不是您想要的,它只是为了演示如何使用,您还应该添加.Include()
using Microsoft.EntityFrameworkCore
评论
@if (Model != null && Model.Amenities != null)
BookingRoom
Amenities
Include
BookingRoom
var bookings = await context.BookingRooms.Include(x => x.AmenitiesList).ToListAsync()
)