2013-04-08 1 views
-1

У меня есть общий вид _layout.cshtml, который будет содержать количество непрочитанных сообщений для пользователя. Нам нужно проверять новые сообщения каждый раз, когда пользователь посещает новое представление. В настоящее время я не вижу необходимости делать это при запрограммированном вызове типа ajax.MVC 4 Обновить меню на каждый просмотр Загрузить

Я могу сделать это весь день с помощью мастер-страниц в .NET Webforms, но мне сложно с этим справиться с MVC.

Мой вопрос: как я могу вызвать вызов базы данных при каждом просмотре нагрузки, чтобы проверить, есть ли изменение количества сообщений и обновление текста в _layout.cshtml?

+0

вы можете передать данные в своей модели или сделать запрос jquery на $ ready –

ответ

3
  1. Создать частичный вид, который будет содержать непрочитанные сообщения и т.д.
  2. Создание модели, чтобы пройти к просмотру
  3. Создания «Частичное действия»
  4. Вашего _layout, позвони Html.RenderAction (или Html.Action())

Мы префикс частичных символов с подчеркиванием.

Views \ Shared \ _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); 
    } 
} 

Просмотров \ Shared \ _Layout.cs

@{ 
    Html.RenderAction("_UnreadMessagesPartial"); 
} 

Я надеюсь, что мой C# нормально, пришлось конвертировать из VB.NET в моей голове.

Смежные вопросы