Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Отображение данных пользователя из БД на всех страницах

Для того чтобы логин, авторизовавшегося пользователя, отображался на всех страницах я сделал так:
_Layout.cshtml
...

Логин: @User.Identity.Name

...
Но мне надо еще отобразить наименование школы, связанной с данным логином. Дел в том, что есть таблица в БД:
dbo.school

и логины (User.Identity.Name) совпадают с полем SchoolID. Как теперь выгрузить соответствующее поле SchoolName и отобразить его на каждой странице сайта вместе с логином.
Конечно же саму информацию выгрузить я могу, реализуя интерфейс IRepository
HomeController.cs
public class HomeController : Controller { private cokoContext context = new cokoContext(); IRepository schoolRepository; }
public HomeController() { schoolRepository = new SchoolRepository(context); }
Но как именно дальше должен сработать Контроллер со View?


Ответ

Можно сделать частичное представление.
Controller:
[ChildActionOnly] public ActionResult GetFooter() { if (Session["footer"] == null) Session["footer"] = _schoolRepository.GetById(User.Identity.Name);
School entity = (School)Session["footer"];
var model = new FooterViewModel(User.Identity.Name, entity.SchoolName);
return View(model); }
Partial View:
@model Namespace.Web.Models.FooterViewModel
@{ Layout = null; // что бы не зациклился }

Логин: @Model.UserLogin

Школа: @Model.SchoolName


Layout:
@{ Html.RenderAction("GetFooter", "Home"); }

Комментариев нет:

Отправить комментарий