部分视图加载错误的模型

时间:2016-01-08 02:36:22

标签: c# asp.net-mvc

我有一个局部视图,其中我有一个指定的模型:

@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]'。

我确定这是因为传递给视图的模型是单个博客,但我想使用在局部视图中定义的列表。有没有办法做到这一点?

1 个答案:

答案 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>