MVC 3实体传入字典的模型项是类型 [英] MVC 3 Entities The model item passed into the dictionary is of type
问题描述
我的行动
公共ActionResult订单()
{
NorthwindEntities db = new NorthwindEntities() ;
返回查看(db.Orders.ToList());
}
public ActionResult OrderDetails(int id)
{
NorthwindEntities db = new NorthwindEntities();
var query =来自db.Order_Details中的od
在db.Products中加入p
on od.ProductID等于p.ProductID
其中od.OrderID == id
选择新的
{
od .OrderID,
od.ProductID,
p.ProductName,
od.Quantity,
od.UnitPrice,
od.Discount,
};
返回查看(query.ToList());
}
我的观点
@model列表MvcApplication2.Models.Order_Detail
@ {
布局= null;
}
<!DOCTYPE html>
< html>
< head>
< title> OrderDetails< / title>
< / head>
< body>
My actions
public ActionResult Orders()
{
NorthwindEntities db = new NorthwindEntities();
return View(db.Orders.ToList());
}
public ActionResult OrderDetails(int id)
{
NorthwindEntities db = new NorthwindEntities();
var query = from od in db.Order_Details
join p in db.Products
on od.ProductID equals p.ProductID
where od.OrderID == id
select new
{
od.OrderID,
od.ProductID,
p.ProductName,
od.Quantity,
od.UnitPrice,
od.Discount,
};
return View(query.ToList());
}
My view
@model List MvcApplication2.Models.Order_Detail
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>OrderDetails</title>
</head>
<body>
@ {
foreach(模型中的var项目)
{
@ Html.DisplayFor(x => item.OrderID)
@ Html.DisplayFor(y => item.ProductID)
@ Html.DisplayFor(y => item.Product.ProductName);
@ Html.DisplayFor(z => item.Quantity)
@ Html.DisplayFor(z => item.UnitPrice)
@ Html.DisplayFor(z => item.Discount)
}
}
@{
foreach (var item in Model)
{
@Html.DisplayFor(x => item.OrderID)
@Html.DisplayFor(y => item.ProductID)
@Html.DisplayFor(y => item.Product.ProductName);
@Html.DisplayFor(z => item.Quantity)
@Html.DisplayFor(z => item.UnitPrice)
@Html.DisplayFor(z => item.Discount)
}
}
< / body>
< / html>
和我的错误
传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [<> f__AnonymousType0`5 [System.Int32,System.Int32,System.Int16,System.Decimal,System。单个]]',但是这个字典需要一个'System.Collections.Generic.List`1 [MvcApplication2.Models.Order_Detail]'类型的模型项。
</body>
</html>
and my error
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[<>f__AnonymousType0`5[System.Int32,System.Int32,System.Int16,System.Decimal,System.Single]]', but this dictionary requires a model item of type 'System.Collections.Generic.List`1[MvcApplication2.Models.Order_Detail]'.
推荐答案
当View需要List of Model类时,您无法传递匿名类型的集合。
请参阅视图中的@model声明,并在代码中选择新的{}部分。
更改代码以返回List< order_details>
(或者是加入时的ViewModel,但是View中的@model声明应该相应更改)
试试吧。
希望这有帮助......
You can't pass a collection of anonymous types when the View expects a List of Model class .
See the @model declaration in the View and the select new {} part in your code.
Change the code to return List<order_details>
(or a ViewModel in case of join ,But then the @model declaration in View should change accordingly )
Try it.
Hope this helps...
你应该使用IEnumerable< table_name>而不是var因为var是一个无类型的。
You should useIEnumerable<table_name> instead of var because var is a ananymous type.
这篇关于MVC 3实体传入字典的模型项是类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!