Могу ли я отображать пользовательские данные по всему сайту, не добавляя к каждой модели представления

1

У меня есть сайт (MVC5) с частичным заголовком. В этом заголовке отображается имя пользователя и логотип организации, которую они представляют.

На каждой странице также есть ViewModel для конкретных страниц.

Можно ли каким-либо образом получить эту Частичную визуализацию на каждой странице из общей модели/объекта за кулисами или мне нужно добавить мою модель "viewheader" в модель просмотра на каждой странице?

  • 0
    Разве для этого не используется _layout.cshtml умолчанию?
  • 0
    Если я делаю это, а также (на определенных страницах) хочу отображать некоторую информацию, относящуюся к конкретной странице, в заголовке, как я могу получить доступ к ViewBag определенной страницы. Или мне нужен метод на каждом контроллере, чтобы настроить заголовок и добавить информацию, относящуюся к странице, как требуется?
Показать ещё 4 комментария
Теги:
asp.net-mvc

1 ответ

3
Лучший ответ

Вы можете выполнить свое требование через ChildActionOnly, скажем -

[ChildActionOnly]
public ActionResult LoggedIn()
{
    // create your User View Model and pass it to Login Partial View
    return PartialView("_LoginPartial", user);
}

Теперь создайте Partial View с строчной типизированной моделью, которую вы возвращаете из действия контроллера выше.

И в вашем макете вы можете получить частичный вид, как показано ниже -

@Html.Action("LoggedIn", "ControllerName")

Таким образом, вам не нужно включать одни и те же модели в разные виды.

  • 0
    +1 для ChildActionOnly, я не знал об этом. Не обязательно в использовании, но довольно безопасно иметь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню