Для того чтобы логин, авторизовавшегося пользователя, отображался на всех страницах я сделал так:
_Layout.cshtml
...
...
Но мне надо еще отобразить наименование школы, связанной с данным логином.
Дел в том, что есть таблица в БД:
dbo.school
и логины (User.Identity.Name) совпадают с полем SchoolID. Как теперь выгрузить соответствующее поле SchoolName и отобразить его на каждой странице сайта вместе с логином.
Конечно же саму информацию выгрузить я могу, реализуя интерфейс IRepository
HomeController.cs
public class HomeController : Controller
{
private cokoContext context = new cokoContext();
IRepository
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; // что бы не зациклился
}
Layout:
@{ Html.RenderAction("GetFooter", "Home"); }
Комментариев нет:
Отправить комментарий