2013-04-08 36 views
-1

我有一个共享视图_layout.cshtml,它将包含用户未读消息的数量。每次用户访问新视图时,我们都需要检查新消息。目前,我没有看到需要在定时的ajax类型的调用上执行此操作。每个视图加载的MVC 4更新菜单

我可以用.NET Webforms上的Master Pages完成这一整天,但我很难用MVC做这件事。

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

+0

你可以在模型中传递数据或者在$ ready上做一个jquery调用 – 2013-04-08 21:05:50

回答

3
  1. 创建其中将包含未读邮件等
  2. 创建一个模型传递给视图
  3. 创建“部分行动”
  4. 从你_layout,调用Html.RenderAction(或Html.Action())的局部视图

我们给partials加下划线。

视图\共享\ _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(); 
    } 
} 

HomeController.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转换在我的头上。