2012-10-18 14 views
14

Mając googlowania jakiegoś czasu, jestem trochę mylić z tym, jak to zrobić w ASP MVC 3.Jak przekazać viewmodel do layoutu/strony wzorcowej?

Tak więc zadaniem jest mieć wspólny układ (lub mistrz?) Aktualizacja poglądów kilku kontrolerów . Wszystkie widoki są silnie wpisane ... Ta strona układu faktycznie wizualizuje niektóre mocno wpisane obiekty. Potrzebuję więc przekazać ten obiekt do strony układu, aby przekazać go do `Html.RenderPartial() 'lub renderować go na stronie.

Artykuł Passing Data to View Master Pages (C#) (choć stary dla mvc2) podaje przykład dostarczenia podstawowej abstrakcyjnej klasy kontrolera, przekazując model do ViewData. To może być lekarstwo.

Ale ...

W niektórych wątków znalazłem sposób można wnieść silnie wpisany stronę wzorcową:

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %> 

tak, to czy to samo podejście w mvc3? Czy jedynym sposobem przekazania danych do strony układu jest użycie ViewBag lub ViewData?

Po przeczytaniu what is the best way to bind ViewModel data to master page in asp.net-mvc, zastanawiałem się nad odpowiedzią Darina, ale nadal uważam, że ta garść poglądów będzie miała ten sam układ i nie widzę powodu, aby podążać za zasadą DRY.

A więc, jak przekazywać obiekty o silnym typie na strony układu? A może coś wymieszałem?

Odpowiedz

17

To interesujący temat do dyskusji -> przekazanie view models do strony głównej/układu kontra ViewBags.

Używam -hate-using ViewBags, więc mam modele widoku dla wszystkich moich warstw widoku. Począwszy od _layout.cshtml i wyżej. Każdy widok korzystający z Układu ... cóż ... ten model widoku dziedziczy po prostu Układ .. lub jakikolwiek widok jest pod nim .. i to jest powtarzane, dopóki nie osiągniesz najniższego poziomu, który zazwyczaj jest _layout ...

Mój RavenOverflow project ma przykładowy kod, który to pokazuje.

+0

Napisałem to jakiś czas temu - unikaj woreczków. http://completedevelopment.blogspot.com/2011/12/stop-using-viewbag-in-most-places.html na temat opublikowany, użyj widoków częściowych lub działań podrzędnych i buforowania, jeśli jest to wymagane. –

+0

Tego właśnie chciałem, ale nie byłem pewien, aby spróbować własnymi rękami ... Podczas gdy zacząłem uczyć się mvc z * Sanderson S, Freeman A. - Pro ASP.NET MVC 3 Framework 3ed. *, Nie miałem znaleźć coś o przekazywaniu modeli do układu. Chociaż, jak widzę, nic nie stoi na przeszkodzie, aby to zrobić. Wielkie dzięki – horgh

+0

@AdamTuliper Nie mam tendencji do korzystania z ViewBag i ViewData, ale bałem się, że muszę .. – horgh

Powiązane problemy