什么是在主页上显示的最佳方式(HomeController,查看索引)来自其他模型的两条最新消息(新闻)?
我在共享视图目录中创建了部分视图,它的外观如下:
@model IEnumerable<MyApp.Models.News>
@foreach (var item in Model.Where(x => x.IsActive ==
true).OrderByDescending(x => x.DateCreated).Take(2)) {
<li>
@Html.ActionLink(item.DateCreated.ToString(), "Details", "News", new { id = item.NewsId})
<p>@item.Content</p>
</li>
}
但这样我就会收到错误:
An exception of type 'System.ArgumentNullException' occurred in
System.Core.dll but was not handled in user code
模型不为空,我的数据库中只有两个“活动”记录,此模型的索引文件也是正确的,但我不知道如何将此部分呈现给我的索引主页...(现在我在HomeController的@Html.Partial("_LatestNews")
}
感谢您提前寻求帮助。
答案 0 :(得分:0)
您需要将模型传递给部分,如此;
@ Html.Partial(&#34; _LatestNews&#34;,Model.News))
答案 1 :(得分:0)
你的部分视图期待你错过的IEnumerable,它应该有这样的东西。
@Html.Partial("_LatestNews", new IEnumerable<MyApp.Models.News>)
但是,在这种情况下,我宁愿关注。
布局视图页
<script>
$(function () {
$("#content").html("Loading...");
//Use setTimeout if you want to keep update or call LoadPartialView() directly.
setTimeout(function () { LoadPartialView(); }, 5000);
});
function LoadPartialView() {
$.ajax({
type: "GET",
url: '@Url.Action("GetNews", "Home")',
dataType: "html",
success: function (data) {
$("#content").empty();
$("#content").html(data);
$("#content").fadeIn('slow');
},
error: function (data) {
$("#content").empty();
}
});
};
</script>
<强>控制器强>
[HttpPost]
public ActionResult GetNews()
{
List<MyApp.Models.News> model = db.GetNews();
return PartialView("_LatestNews", model);
}