-1

我有一个共享视图 _layout.cshtml,其中将包含用户的未读消息数。每次用户访问新视图时,我们都需要检查新消息。目前,我认为不需要对定时 ajax 类型的调用执行此操作。

我可以整天使用 .NET Webforms 上的 Master Pages 来做这件事,但我很难用 MVC 做这么简单的事情。

我的问题是:如何在每次视图加载时触发数据库调用,以检查消息数量是否发生变化并更新 _layout.cshtml 中的文本?

4

1 回答 1

3
  1. 创建一个包含未读消息等的局部视图
  2. 创建模型以传递给视图
  3. 创建“部分操作”
  4. 从您的_Layout,调用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 转换。

于 2013-04-09T01:38:15.677 回答