局部视图加载错误的模型

本文关键字:模型 错误 加载 视图 局部 | 更新日期: 2023-09-27 18:29:23

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

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

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

局部视图加载错误的模型

如果不显式地将模型传递给分部,它将采用父视图的模型。因此,从您的错误消息中,很明显,您正在将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>