myList - это список типа Anonymous object
, в этом нет ничего плохого, но будет сложно отследить. Что нам нужно сделать, это создать класс / модель для него, ТОГДА создать модель представления, которая будет содержать обе переменные.
- Создать модель или модель представления для анонимного объекта myList, я использовал TeacherAppointment;
// if the property/data type doesn't match with your Appointments model, please change accordingly
public class TeacherAppointment {
public string DayName {get;set;}
public string WHours {get;set;}
}
Обновите myList LINQ, чтобы сохранить его в объекте TeacherAppointment. myList теперь
List<TeacherAppointment>
var myList = (from t in db.Appointments
from d in t.WeekDays
where t.TeacherId == id
select new TeacherAppointment { DayName=d.Name, WHours=t.Hours }
).ToList();
Создание модели представления, которая будет содержать 2 модели.
public class TeacherDetailViewModel{
public List<TeacherAppointment> TeacherAppointments {get;set;}
public List<Language> Languages {get;set;}
}
По вашему мнению, вы должны использовать;
@model TeacherDetailViewModel
Ваш код контроллера должен быть;
public ActionResult ClassTeacherDetail(int id)
{
ViewBag.dgr = db.Teachers.Where(m => m.Id == id).FirstOrDefault();
var myList = (from t in db.Appointments
from d in t.WeekDays
where t.TeacherId == id
select new TeacherAppointment { DayName=d.Name, WHours=t.Hours }
).ToList();
// Get the languages which can be learned by the teacher based on teacher id
var query = from t in db.Teachers.Where(x => x.Id == id)
from l in t.Languages
select new
{
LangName = l.Name,
};
var list = new List<Language>();
foreach (var item in query)
{
list.Add(new Language()
{
Name = item.LangName
});
}
// instantiate view model
TeacherDetailViewModel tdvm = new TeacherDetailViewModel();
// assign myList and list to TeacherDetailViewModel
tdvm.TeacherAppointments = myList;
tdvm.Languages = list;
// Pass tdvm to the view
return View(tdvm);
}
По вашему мнению, если вы хотите зациклить;
@foreach(var a in Model.TeacherAppointments){
...
}
@foreach(var b in Model.Languages){
...
}