我是MVC的新手,所以请原谅我的问题听起来很愚蠢或太简单。我正在使用实体数据模型进行数据库访问。所以在我的Models文件夹中,我添加了一个EDMX文件,并且可以从我的控制器和强类型视图访问模型类。当我在控制器中访问多个表格时出现问题,例如如何从控制器传递匿名对象的集合来查看
如果我有以下我的数据库表:
Departments(DepartmentID, DepartmentName, DepartmentPhone)
Insurances(InsuranceID, InsuranceName, InsuranceAddress)
Employees(EmployeeID, EmpFName, EmpLName, DepartmentID, InsuranceID)
而且我想他们的部门和保险信息显示员工列表。
在我的控制器的操作方法我访问DB使用EDM和匿名类型得到的信息:
using (var context = new MyEntities())
{
var model = (from d in context.Departments
join e in context.Employees on d.DepartmentID equals e.DepartmentID
join I in context.Insurances on I.InsuranceID equals e.InsuranceID
select new
{
DepartmentID = d.DepartmentID,
EmployeeID= e.EmployeeID,
EmpFName= e.EmpFName,
EmpLName= e.EmpLName,
DepartmentName= d.DepartmentName,
InsuranceName= I.InsuranceName
}).ToList();
return View(model);
}
我没有一类这个匿名类型的在我的模型文件夹,这样我就可以”创建一个强类型的视图。那么将这个列表传递给View的最好方法是什么?如果集合太大,使用viewbag将会是一个过度杀伤力。为这个匿名类创建一个新的模型听起来不正确,因为如果我在Controllers Action Method中更改我的选择,它需要随时更新。
欢迎您提出任何建议。我试图通过其他问题来看看,但找不到任何相关的东西。
谢谢。
这种方法使你在IntelliSense支持你视图,并且可以让您轻松使用所有'* For'方法,如果您需要它们。此外,它允许您选择在相同模型中发回信息,如果更新或插入有用。 – 2012-07-12 06:59:27
Darin plz看到我的回复。 – shazia 2012-07-13 02:38:53
你为什么在'foreach'循环中使用'@ model'? '@ model'应该只在您的视图中出现一次(通常在顶部),表明该视图是强类型的模型:'@model List'。然后在循环内而不是'@ model'使用'@ item'。 –
2012-07-13 05:52:07