我有一个共享视图 _layout.cshtml,其中将包含用户的未读消息数。每次用户访问新视图时,我们都需要检查新消息。目前,我认为不需要对定时 ajax 类型的调用执行此操作。
我可以整天使用 .NET Webforms 上的 Master Pages 来做这件事,但我很难用 MVC 做这么简单的事情。
我的问题是:如何在每次视图加载时触发数据库调用,以检查消息数量是否发生变化并更新 _layout.cshtml 中的文本?
我有一个共享视图 _layout.cshtml,其中将包含用户的未读消息数。每次用户访问新视图时,我们都需要检查新消息。目前,我认为不需要对定时 ajax 类型的调用执行此操作。
我可以整天使用 .NET Webforms 上的 Master Pages 来做这件事,但我很难用 MVC 做这么简单的事情。
我的问题是:如何在每次视图加载时触发数据库调用,以检查消息数量是否发生变化并更新 _layout.cshtml 中的文本?
Html.RenderAction
(或Html.Action()
)我们用下划线作为部分前缀。
视图\共享\_UnreadMessagesPartial.cshtml
@model UnreadMessagesViewModel
Unread messages: @Model.UnreadMessagesCount
UnreadMessagesViewModel.cs
public class UnreadMessagesViewModel
{
private DbContext _db;
public int UnreadMessagesCount;
public UnreadMessagesViewModel() {
_db = new DbContext();
UnreadMessages = _db.Messages.Count();
}
}
家庭控制器.cs
public class HomeController : Controller
{
// mark this action as unavailable to the general public
[ChildActionOnly]
public ActionResult _UnreadMessagesPartial()
{
UnreadMessagesViewModel viewModel = new UnreadMessagesViewModel();
return PartialView(viewModel);
}
}
视图\共享\_Layout.cs
@{
Html.RenderAction("_UnreadMessagesPartial");
}
我希望我的 C# 没问题,必须在我的脑海中从 VB.NET 转换。