2013-04-08 31 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轉換在我的頭上。