我正在尝试显示模型的默认索引页面。但我得到以下错误。
传递到字典中的模型项是类型的 'System.Collections.Generic.List 1 [System.Boolean]',但是这个 字典需要类型的模型项 'System.Collections.Generic.IEnumerable`1 [EDIWebsite.Models.Error_Details]'。
控制器
public ActionResult FindRelatedBols(string bolnumber)
{
if (bolnumber == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var error_Summaries = db.Error_Details.Select(r => r.BOL == bolnumber);
if (error_Summaries == null)
{
return HttpNotFound();
}
return PartialView("~/Views/Error_Details/Index.cshtml",error_Summaries.ToList());
}
查看
@model IEnumerable<EDIWebsite.Models.Error_Details>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Source_System)
</th>
.
.
.
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
答案 0 :(得分:0)
错误是不言自明的。您的视图是对Error_Details
个对象的集合强类型的。您当前的代码生成IQueryable<bool>
作为error_Summaries
变量的类型,您稍后在其上调用ToList()
,这将生成一个布尔值列表(List<bool>
)。
您的观点期待某些内容(IEnumerable<Error_Details>
)并且您的操作方法正在传递其他内容(List<bool>
),因此会导致该类型不匹配异常!
您需要将Error_Details
个对象的集合传递给视图。我假设你想传递一个过滤的项目列表,它与你的bolnumber
参数具有相同的BOL值。您可以使用LINQ Where
方法进行过滤。
var items = db.Error_Details.Where(a=>a.BOL == bolnumber).ToList();
return PartialView("~/Views/Error_Details/Index.cshtml",items);
假设BOL
类的Error_Details
属性属于string
类型。