Ссылка на объект не установлена ​​для экземпляра объекта. Модель имеет нулевое значение. - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь отобразить контрольный список, который получает данные из базы данных MySQL и отображает их в виде и обновляет значение переменной (IsChecked) каждого элемента в таблице в зависимости от того, проверили мы удобство или нет (яотображение некоторых удобств). Модель представления - Hotel_5.ViewModel.BookingRoom, где BookingRoom - это пользовательская модель, которую я создал, где я использую несколько моделей. Я получаю исключение в Model.AabilitiesList.Count (). Модель пуста.

Это мой взгляд

<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
    }

1 Ответ

0 голосов
/ 08 ноября 2019

При запросе вы должны также включить его AmenitiesList, иначе он будет нулевым:

В контроллере:

var bookingRoom = context.BookingRooms.Include(b => b.AmenitiesList).FirstOrDefault(b => b.Id == someId);
//                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

обратите внимание, что то, что я запрашивал, может быть не тем, что вы хотите, это просто чтобы продемонстрировать, как использовать Include(), а также вы должны добавить using Microsoft.EntityFrameworkCore.

...