我有一个局部视图,其中我有一个指定的模型:
@model IEnumerable<AbstractThinking2015.Models.BlogModel>
@foreach (var item in Model.Take(5))
{
<li>@Html.ActionLink(item.Title, "Details", new { id = item.BlogModelId })</li>
}
我正在使用:
<div class="widget">
<h4>Recent Posts</h4>
<ul>
@Html.Partial("View")
</ul>
</div>
但是我收到了错误:
传递到字典中的模型项是类型的 'AbstractThinking2015.Models.BlogModel',但这本字典需要 类型的模型项 'System.Collections.Generic.IEnumerable`1 [AbstractThinking2015.Models.BlogModel]'。
我确定这是因为传递给视图的模型是单个博客,但我想使用在局部视图中定义的列表。有没有办法做到这一点?
答案 0 :(得分:4)
如果没有明确地传递模型部分,它将采用父视图的模型。因此,从您的错误消息中可以清楚地看到,您正在通过操作方法将BlogModel的单个对象传递给您的视图,从而获得错误。
您需要确保主视图(您调用局部视图的位置)也强烈键入BlogModel
个对象的集合。
public ActionResult Index()
{
var blogList=new List<Models.BlogModel>();
// or you may read from db and load the blogList variable
return View(blogList);
}
您调用Partial的Index视图将强烈输入BlogModel
的集合。
@model List<Models.BlogModel>
<h1>Index page which will call Partial</h1>
<div class="widget">
<h4>Recent Posts</h4>
<ul>
@Html.Partial("View")
</ul>
</div>