MVC 3实体传入字典的模型项是类型 [英] MVC 3 Entities The model item passed into the dictionary is of type

查看:73
本文介绍了MVC 3实体传入字典的模型项是类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的行动



公共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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆