创建MVC使用实体框架剃刀
问题描述:
我想提出一个清单,车辆填充的动态列表,使使用存储过程和Entity Framework,但是当它出现以下错误:创建MVC使用实体框架剃刀
模型项目传入字典的类型是'System.Collections.Generic.List 1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [VehicleInfo.Models.tblVehicle]'。
型号
public partial class tblVehicle
{
public string BrandName{ get; set; }
}
控制器
public ActionResult Index()
{
VehicleDBContext db = new VehicleDBContext();
var brandnames = db.prcGetMakes().ToList();
return View(brandnames);
}
查看
@model IEnumerable<VehicleInfo.Models.tblVehicle>
<ul id="Makes">
@foreach (var item in Model)
{
<li>@item.BrandName.Distinct()</li>
}
</ul>
存储过程
CREATE PROCEDURE [dbo].[prcGetMakes]
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT
UPPER(BrandName) BrandName
FROM
tblVehicle
ORDER BY
BrandName
END
一定有什么令人惊讶的明显,我的思念,但我似乎无法工作了。
请帮忙!
答
从错误消息中可以看出,在您的操作方法中,表达式db.prcGetMakes().ToList()
返回字符串列表,并将其传递给视图。但是,您的视图强烈键入tblVehicle
对象列表,因此获取有关类型不匹配的错误消息。
解决方法是使两种类型匹配。您可以更新您的看法是强类型string
型
@model IEnumerable<string>
<ul id="Makes">
@foreach (var item in Model)
{
<li>@item</li>
}
</ul>
+0
非常感谢。这工作完美:) –
什么是'db.prcGetMakes()的结果类型的列表。ToList()'?这是一个字符串列表吗?那么错误就是自我解释。您的视图被强制输入到“tblVehicle”列表中。使用当前视图代码,您基本上需要返回'tblVehicle'对象的列表。 – Shyju
非常感谢,谢谢:) –