C# 具有列表模型的MVC局部视图
我有一个新闻项目页面,我想包括一个部分视图,展示最新5条新闻项目的列表。然而,我得到了一份工作 此词典需要类型为的模型项 'System.Collections.Generic.List 错误消息。我假设主视图是强类型的,用于显示单个项,而局部视图是强类型的,带有泛型列表,两者不匹配 控制器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.
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()});
}