2015-03-13 4 views
0

У меня есть две моделиASP.NET MVC Relational DB

public class Department 
{ 
    public int DepartmentID { get; set; } 
    public string DepartmentName { get; set; } 
    public string Image { get; set; } 
    public List<Teacher> Teachers { get; set; } 
} 

public class Teacher 
{ 
    public int TeacherID { get; set; } 
    public string TeacherName { get; set; } 
    public string TeacherLname { get; set; } 
    public int DepartmentID { get; set; } 
    public string Image { get; set; } 
    public Department Department { get; set; } 
} 

и у меня есть ViewModel

public class ViewModel 
{ 
    public List<Teacher> Teachers { get; set; } 
    public List<Department> Departments { get; set; } 
} 

У меня есть мнение, где я отображая отделы

SchoolDbContext db = new SchoolDbContext(); 
public ActionResult Index() 
{ 
    ViewModel model = new ViewModel(); 
    // retreive from database 
    model.Departments = db.Departments.ToList(); 
    return View(model); 
} 

и on Детали Я хочу показать Учителей с DepartmentID, где у меня есть отношение.

Я пытаюсь использовать этот

public ActionResult Details(int id = 0) 
{ 
    ViewModel model = new ViewModel(); 
    model.Departments = db.Departments.ToList(); 
    model.Teachers = db.Teachers.Where(m => m.DepartmentID == m.DepartmentID); 
    return View(model); 
} 

но есть ошибка

Ошибка 1 Не удается неявно преобразовать тип 'System.Linq.IQueryable < _167School.Models.Teacher>' в 'System.Collections.Generic.List < _167School.Models.Teacher>'. Явное преобразование существует (вы пропали без вести слепок?) C: \ Users \ Admin \ Documents \ Visual Studio 2013 \ Projects \ 167School \ 167School \ Контроллеры \ DepartmentsController.cs 33

+2

Почему вы делаете m => m.DepartmentId == m.DepartmentId? его равноценность контекста. Учителя. Где (m => true)? – heymega

ответ

4

Попробуйте это:

public ActionResult Details(int id = 0) 
 
{ 
 
    ViewModel model = new ViewModel(); 
 
    model.Departments = db.Departments.ToList(); 
 
    model.Teachers = db.Teachers.Where(m => m.DepartmentID == id).ToList(); 
 

 

 
    return View(model); 
 
}

вы вы должны вернуть объект Учителя в виде списка, так как его определен как список в классе ViewModel.

+1

любите свой путь m => m.DepartmentID == m.DepartmentID в – Ewan

+0

обновленный ответ с, m => m.DepartmentID == id – VindulaF

+0

Nooo восхитительная ирония разрушена !! :( – Ewan

Смежные вопросы