我有一个新闻项目页面,我想要包含一个部分视图,其中列出了最新的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);
}
查看(简化)
@using MyMVC.Models
@model tblNews
<h2>@Model.newsTitle</h2>
@Html.Raw(Model.newsText)
<p>@Model.newsCreateDate</p>
@Html.RenderPartial("NewsLatest")
部分视图
@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>
我在视图中尝试了这个:
@{
Html.RenderPartial("NewsLatest", new List<tblNews> { new tblNews()});
}
但看起来ActionResult并没有因此而被解雇。
有关此问题的SO有几个问题。但我无法理解解决方案。便士并没有下降!
我是否真的必须创建一个包含新闻项数据和新闻项列表的视图模型?