Asp.net 使用viewbag发送数据
我正在做一个项目。我需要从数据库中获取一些数据并发送到视图。我已经有了一份数据清单。我还想通过viewbag发送我的另一个数据。我从数据库中查询了我的相关数据 ClassController.csAsp.net 使用viewbag发送数据,asp.net,asp.net-mvc,entity-framework,linq,model-view-controller,Asp.net,Asp.net Mvc,Entity Framework,Linq,Model View Controller,我正在做一个项目。我需要从数据库中获取一些数据并发送到视图。我已经有了一份数据清单。我还想通过viewbag发送我的另一个数据。我从数据库中查询了我的相关数据 ClassController.cs public ActionResult ClassTeacherDetail(int id) { ViewBag.dgr = db.Teachers.Where(m => m.Id == id).FirstOrDefault();
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 { 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
});
}
return View(list);
}
public ActionResult类教师详细信息(int-id)
{
ViewBag.dgr=db.Teachers.Where(m=>m.Id==Id.FirstOrDefault();
var myList=(从t开始,以db.为单位)
工作日从d开始
其中t.TeacherId==id
选择新建{DayName=d.Name,WHours=t.Hours}
).ToList();
//根据教师id获取教师可以学习的语言
var query=来自t,在db.Teachers.Where中(x=>x.Id==Id)
来自t语言中的l
选择新的
{
LangName=l.名称,
};
var list=新列表();
foreach(查询中的var项)
{
list.Add(新语言()
{
Name=item.LangName
});
}
返回视图(列表);
}
正如你所看到的,我从不同的表格中得到了工作时间和天数。顺便问一下,myList的类型是什么?如果我将其发送到视图,模型类型将是什么
如何传递myList?myList是一个类型为
匿名对象的列表
,这没什么错,但很难跟踪。我们需要做的是为它创建一个类/模型,然后创建一个包含这两个变量的viewmodel
List
不要使用
ViewBag
而是使用模型。您在视图模板代码中获得了类型安全性。您将错误的列表分配给了ViewBag
。您将myList
分配给ViewBag
并在视图中尝试从teacherDayHours
获取dada,但视图中已经有一个模型,您是否发布完整的控制器代码?@JerdineSabio我发布了完整的控制器非常感谢。你帮了我很多。我克服了我的问题。@AtakanTekoglu不客气!谢谢。请接受此作为完成的正确答案。
// 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;}
}
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();
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){
...
}