具有列表模型的MVC部分视图

时间:2015-06-17 11:07:58

标签: 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.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有几个问题。但我无法理解解决方案。便士并没有下降!

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

0 个答案:

没有答案