我试图显示没有模型的结果(CLASS),我已经有一个部门和Employee类,现在要显示他们的连接结果我不想创建另一个包含EmpName和Department Name属性的类。
IN MODEL
(11+1+4 bits or 4+7+1+4 bits = 16 bits)
IN CONTROLLER
public class EmpDetails
{
public int EmpID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public int DepartmentID { get; set; }
}
public class Department
{
public int DepartmentID { get; set; }
public string DepartmentName { get; set; }
public string Location { get; set; }
}
视图
ERROR ::'object'不包含'Name'的定义
var q = (from ED in cc.EmpDetails
join DT in cc.Department
on ED.DepartmentID equals DT.DepartmentID
select new {
ED.Name,
DT.DepartmentName
});
ViewBag.ListData = q;
我希望不使用模型
来完成答案 0 :(得分:0)
您可以选择值作为字符串数组。
CONTROLLER - 记得在最后一行使用ToList():
var q = from ED in cc.EmpDetails
join DT in cc.Department
on ED.DepartmentID equals DT.DepartmentID
select new { ED.Name, DT.Departmentname };
ViewBag.ListData = (from l in select new string[] { Name, Departmentname}).ToList();
然后在您的视图中使用数组索引引用您的值。
查看:
foreach (string[] item in ViewBag.ListData)
{
<div>
@item[0]
</div>
<div>
@item[1]
</div>
}
答案 1 :(得分:0)
你有什么特别的理由不想使用模特吗?您可以尝试使用ViewModel,它仍然像模型一样,但是当您要在视图上显示特定数据时,它会被使用。您可以像这样编写Department and Employment类的表示
<强>视图模型:强>
public class DepartmentEmploymentViewModel
{
public string departmentName { get; set; }
public string employmentName { get; set; }
}
<强>控制器:强>
var q = (from ED in cc.EmpDetails
join DT in cc.Department
on ED.DepartmentID equals DT.DepartmentID
select new {
ED.Name,
DT.DepartmentName
});
//collection of department and employment name
List<DepartmentEmploymentViewModel> dpVM = new List<DepartmentEmploymentViewModel>();
dpVM = q;
查看:强>
@model projName.Models.DepartmentEmploymentViewModel
foreach (var item in Model)
{
<div>
@item.Name
</div>
<div>
@item.DepartmentName
</div>
}
答案 2 :(得分:0)
你可以试试这样的事情
@model dynamic
<h1>List of Customers</h1>
<div>
@foreach(var item in Model.Customers)
{
<h2>@item.CustomerID</h2>
}
</div>
示例查询
var query = from c in db.Customers
join o in db.Orders
on c.CustomerID equals o.CustomerID
orderby c.CustomerID ascending
select new {
c.CustomerID,
c.CompanyName,
o.OrderID,
o.OrderDate
};
在这里,您没有选择客户对象(选择c)。
您正在创建一个具有四个属性的匿名类型 - CustomerID,CompanyName,OrderID和OrderDate。虽然这个LINQ查询没有任何问题。
但您无法将匿名类型传递给ASP.NET MVC视图。
推荐的解决方案,但您需要再创建一个额外的类。如果您希望由于某种原因避免这样做,这里也是ExpandoObject。
您可以将实现的数据存储在
ExpandoObject
中,然后传递它 观点。
public ActionResult Index()
{
NorthwindEntities db=new NorthwindEntities();
dynamic model = new ExpandoObject();
model.Customers = db.Customers.ToList();
model.Orders = db.Orders.ToList();
return View(model);
}
查看更多详情here