C# 具有列表模型的MVC局部视图

C# 具有列表模型的MVC局部视图,c#,asp.net-mvc-4,renderpartial,C#,Asp.net Mvc 4,Renderpartial,我有一个新闻项目页面,我想包括一个部分视图,展示最新5条新闻项目的列表。然而,我得到了一份工作 此词典需要类型为的模型项 'System.Collections.Generic.List 错误消息。我假设主视图是强类型的,用于显示单个项,而局部视图是强类型的,带有泛型列表,两者不匹配 控制器 public ActionResult NewsItem(int newsId, string newsTitle) { var q = _ctx.tblNews.Single(x => x.

我有一个新闻项目页面,我想包括一个部分视图,展示最新5条新闻项目的列表。然而,我得到了一份工作

此词典需要类型为的模型项 'System.Collections.Generic.List

错误消息。我假设主视图是强类型的,用于显示单个项,而局部视图是强类型的,带有泛型列表,两者不匹配

控制器

public ActionResult NewsItem(int newsId, string newsTitle)
{
    var q = _ctx.tblNews.Single(x => x.newsID == newsId);

    return View(q);
}

public ActionResult NewsLatest()
{
    var q = _ctx.tblNews.OrderBy(x => x.newsCreateDate)
            .Where(x => x.WebsiteID == 2 && x.newsPublish).Take(5).ToList();
    return View(q);
}
视图(简化)

使用MyMVC.Models @tblNews模型 @Model.newsttitle @Html.Raw(Model.newsText) @Model.newsCreateDate

@Html.RenderPartial(“最新消息”) 局部视图

@using MyMVC.Helpers
@model List<MyMVC.Models.tblNews>

<table>
    @foreach (var x in Model)
    {
        <tr>
            <td>
                @Html.ActionLink(x.newsTitle, "NewsItem", new { newsId = x.newsID, newsTitle = x.newsTitle.ToSeoUrl() })<br />
                <hr />
            </td>
        </tr>
    }
</table>
@使用MyMVC.Helpers
@模型列表
@foreach(模型中的var x)
{
@ActionLink(x.newsttitle,“NewsItem”,new{newsId=x.newsId,newsttitle=x.newsttitle.ToSeoUrl()})

}
我试过这样的观点:

@{
    Html.RenderPartial("NewsLatest", new List<tblNews> { new tblNews()});
}
@{
RenderPartial(“NewsLatest”,新列表{new tblNews()});
}
但这样看来ActionResult不会被炒鱿鱼

与此相关的还有几个问题。但我就是想不起解决办法。硬币没有掉下来


我真的必须创建一个包含新闻项数据和新闻项列表的视图模型吗?

错误是不言自明的,您传递的模型与视图所期望的模型类型不同。“我真的必须创建一个视图模型吗?”?你为什么不想用正确的方法去做呢。但另一种方法是使用
@Html.Action(“NewsLatest”)
调用控制器方法,该方法返回部分视图(或
{Html.RenderAction(“NewsLatest”);}
)公共操作结果NewsLatest()项目列表没有位置
@{
    Html.RenderPartial("NewsLatest", new List<tblNews> { new tblNews()});
}