ASP. NET Основная проблема в привязке модели - PullRequest
0 голосов
/ 01 апреля 2020

Я новичок в ASp. NET Core. Все данные сохранены в базе данных правильно, я попытался показать данные модели в представлении. Данные о модели человека получены правильно, но адрес второй модели не отображается в представлении. Я подозреваю, что допустил ошибку в контроллере.

Первая модель:

public class Person
    {
        public int PersonID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public Address HomeAddress { get; set; }
    }

Вторая модель:

public class Address
    {
        public int ID { get; set; }
        public string Line { get; set; }
        public string City { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }

        public int PersonId { get; set; }
        public Person Person { get; set; }
    }

Код контроллера:

public IActionResult Index()
        {

            return View(_repository.Persons);
        }
        [HttpGet]
        public ViewResult Create()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Create(PersonCreateViewModel p)
        {
            var obj = new Person
            {
                FirstName = p.FirstName,
                LastName = p.LastName,
                BirthDate = p.BirthDate,
                HomeAddress = p.HomeAddress,
                Role = p.Role,
                IsApproved = p.IsApproved
            };
            _repository.Add(obj);
            return View();
        }

Просмотр:

@model IEnumerable<Person>
@{
    ViewData["Title"] = "Home Page";
}
<div class="text-center">
    @foreach(var p in Model)
    {
        <p>Name - @p.FirstName</p>
        <p>Last Name - @p.LastName</p>
        <p>Role - @p.Role</p>
        <p>Line - @p.HomeAddress?.Line</p>
        <p>City - @p.HomeAddress?.City</p>
    }
    <hr />
</div>

1 Ответ

2 голосов
/ 01 апреля 2020

Как сказал в своем комментарии пользователь Mustapha Larhrouch, один из способов исправить это - использовать метод include для вашего свойства для загрузки связанных данных, поэтому _repository.Persons.Include (p => p. Адрес)

Существует несколько способов, с помощью которых Entity Framework Core загружает связанные данные из базы данных, такие как загрузка Eager, явная загрузка и загрузка Lazy, описанный выше метод называется Eager loading

. Я предлагаю вам взглянуть на Загрузка связанных данных из MS docs. Или раздел отложенной загрузки в Запрос в Entity Framework Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...