Jak przekazać dane do layouta w ASP.NET MVC

0

Mam kilka widoków, każdy korzysta z własnego ViewModel oraz z wspólnego layout'a. Potrzebuję przekazać osoby ViewModel do layoutu zawierający dane takie jak nazwa strony, meta dane, itp. Jak to zrobić, aby rozwiązanie było ładne?

0

Nazwę strony możesz znaleźć gdzieś w ViewContext. Co dokładnie chcesz osiągnąć?

0

Dokładnie rzecz ujmując chce uzyskać taki coś:

Views/Student/Index.cshtml

@model StudentsViewModel
@Layout = "_Layout.cshtml"
// reszta kodu
 

Views/School/Room.cshtml

@model RoomViewModel
@Layout = "_Layout.cshtml"
// reszta kodu

_Layout

@model LayoutModel // osobny model dla layouta
<title>@Model.Title</title>
<meta keywords="@Model.Keywords"/>

Coś takiego, tylko że mam dużo więcej widoków i jeden layout, chce mieć możliwość przekazania danych do layouta takich jakby współdzielony model dla wszystkich widoków.

0

To najprościej chyba utworzyć bazowy viewmodel i ustawić go jako @model w layoucie, a konkretne viewmodele niech z niego dziedziczą.

0

Z dziedziczeniem po wspólnym ViewModel wiążą się pewne problemy. To rozwiązanie wydaje się przejrzyste: http://blog.gauffin.org/2011/09/getting-information-into-the-layout-without-using-viewbag/, co prawda jest to taki oszukany ViewBag, ale idea przysporzy mniej problemów.

0

Czyli zamieniamy bazowy ViewModel na bazowy kontroler i bazowy widok? Mnie nie przekonuje, ale może w pewnych sytuacjach ma to sens.

1 użytkowników online, w tym zalogowanych: 0, gości: 1