Я новичок, поэтому думаю, что моя проблема как-то тривиальна.
Я создал простую БД с CodeFirst.У меня есть сущность с именем Person
и другая с именем Location
.Person
имеет свойство ForeignKey
с именем LocationId
и другое свойство типа Location
для справочных целей.
Я создал представление, в котором есть форма, с помощью которой я могу создавать новые Person
записи.
Одним из полей формы является DropDownList для «Местоположения» человека.Он принимает значение Id и присваивает его свойству LocationId
, равному Person
.
Это представление ссылается на действие create
Controller, которое получает Person
в качестве аргумента и создает привязку к полям формы со свойствами person
.Затем он выполняет SaveChanges()
в DBContext
и перенаправляет на другое Действие с именем details
с указанным «Идентификатором».
Details
делает find
на полученном идентификаторе и отправляетresult (Person) для представления для представления.
Вот моя проблема:
Я пытаюсь отобразить текст Location of конкретного «Person», который я передал, и ничего не получаю.Я делаю это:
@Html.DisplayFor(model => model.Location.LocationValue)
Модель, конечно же, «человек».Почему я не получаю никакого значения для этого?
Вот код:
public class Person
{
public int PersonId { get; set;
public string LocationId { get; set; }
...
public virtual Location Location { get; set; }
}
public class Location
{
public int LocationId { get; set; }
public string LocationValue { get; set; }
public virtual ICollection<Person> Persons { get; set; }
}
public ActionResult Detailes(int id)
{
Person person = db.Persons.Find(id);
return View(person);
}
[HttpPost]
public ActionResult AddPerson(Person person)
{
if (ModelState.IsValid)
{
db.Persons.Add(person);
db.SaveChanges();
return RedirectToAction("Detailes", new {id = person.PersonId});
}
return View(GetAddPersonViewModel());
}
Модель здесь - это модель представления для формы
@Html.DropDownListFor(model => model.Person.LocationId, Model.LocationsList)
И снова, представление представления «детали»:
@Html.DisplayFor(model => model.Location.LocationValue)
Спасибо.