Я действительно не знаю правильных слов, чтобы задать вопрос, который мне нужен, что означает, что я действительно ничего не получаю от google, поэтому я просто собираюсь создать простой пример. Если вы можете ответить на мой вопрос или просто указать мне в сторону того, что мне нужно искать, это было бы здорово.Как отобразить значение для поля объекта, находящегося внутри объекта?
Скажем, у меня есть эти классы:
public class Teacher
{
public int teacherID { get; set; }
public string name { get; set; }
}
public class Course
{
[Key]
public int ID { get; set; }
public string courseName { get; set; }
public int? teacherID { get; set; }
public Teacher teacher { get; set; }
}
public class schoolDBContext : DbContext
{
public DbSet<Course> Courses { get; set; }
public DbSet<Teacher> Teachers { get; set; }
}
Как отобразить в HTML имя учителя при показе курса. Например, когда у меня есть то, что ниже для представления, имя учителя пустое. Что мне нужно изменить, чтобы отобразилось имя учителя для курса?
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.teacher.Name)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.teacher.Name)
</td>
</tr>
}
Это конфигурация, которую я перезаписаны около 30 раз:
protected override void Seed(school.Models.schoolDBContext context)
{
context.Courses.AddOrUpdate(i => i.ID,
new Course
{
courseName = "Math",
teacher = new Teacher { teacherID = 1, name = "Ms. Brooks" },
teacherID = 1
},
new Course
{
courseName = "Science",
teacher = new Teacher { teacherID = 2, name = "Ms. James" },
teacherID = 2
},
new Course
{
courseName = "History",
teacher = new Teacher { teacherID = 3, name = "Ms. Davidson" },
teacherID = 3
}
);
}
страница выглядит следующим образом.
Но если я делаю это для контроллера:
public ActionResult Index()
{
var _coursesList = new List<Course>();
_coursesList.Add(new Course { ID = 1, courseName = "English", teacherID = 1, teacher = new Teacher { teacherID = 1, name = "Mrs. Thomas" } });
_coursesList.Add(new Course { ID = 2, courseName = "History", teacherID = 2, teacher = new Teacher { teacherID = 2, name = "Ms. Jones" } });
_coursesList.Add(new Course { ID = 3, courseName = "Math", teacherID = 2, teacher = new Teacher { teacherID = 2, name = "Ms. Fisher" } });
return View(_coursesList);
// return View(db.Courses.ToList());
}
я получаю это:
Вы уверены, что model.Teacher.Name имеет значение? Вы можете проверить контроллер, прежде чем возвращать представление во время отладки. – itsme86
Я тестирую его с локальной базой данных, для которой я засеял данные. Несмотря на то, что он показывает значение в базе данных, по какой-то причине он, похоже, не проходит. – Amanda