Diskuze: ASP.NET MVC - View z více tabulek
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Toto resi prave ViewModel, ktery se pouziva jako prepravka dat mezi pohledem a modelem. Viewmodel obsahuje presne to, co obsahuje samotny pohled a v kontroleru to uz namapujes na jednotlive modely, treba pres automapper a nebo rucne.
Navic, viewmodel se ma vyuzivat porad... Do view se nemaji cpat samotne modely(tabulky).
Ano, původní moje myšlenka byla špatná, po chvíli gůglení jsem zjistil, že se to takto asi nedělá. Trošku mě matou pojmy model, viewmodel, jaký je mezi tím rozdíl? A Jak by měl v mém případě ten viewmodel vypadat, resp. jaké položky by měl obsahovat?
Model predstavuje tabulku v DB a viewmodel predstavuje prepravku dat mezi View a Modelem. Do ViewModelu dat vlastnosti, ktere budes potrebovat ve View - nic vic a nic min. Radeji ti poslu odkaz, kde to bude lepe vysvetlene:
www.mikesdotnetting.com/article/188/view-model-design-and-use-in-razor-views
http://www.dotnetportal.cz/clanek/8479/asp-mvc-from-zero-to-hero-4-MVC-architektura-view-viewmodel-controller-razor
Ten článek jsem již četl, ale jsme z něj srnec, daněk, jelen a v podstatě většinu toho jsem nepochopil...
http://www.dotnetportal.cz/…roller-razor
Vsak jsi to cetl jiz tady. Nebo jsi to z toho nepochopil? (k tve otazce v komentarich, dalsi dil bude tuto sobotu - namotivoval jsi me to dopsat)
Čtu ho již po několikáté, ale já jsem takový věčný začátečník a než něco pochopím, tak mi to trvá...
Knihu xichtů nepoužívám. Ten článek jsem četl asi 5x a zatím to vypadá, že se budu muset vrátit zpátky k webforms, bo toto nedávám... Jednoduché zobrazení z jedné tabulky je OK, ale toto ani omylem... Vůbec netuším, jak by ten ViewModel měl vypadat, kam ho umístit a jak z něj udělat Controller a pak to výsledné View...
Tak mi napis prost tady do zrpav, co presne potreubujes realizovat a co chces vysvetlit.
Mám tabulky (ObjToner, PolObjToner, Tonery, Stav, AspNetUsers) a chtěl bych
ve View zobrazit detail Objednávky (autor, datum, stav...) a jednotlivé
položky(toner, popis, barva...) viz. obrázek
Teď to mám ve webforms, tam je to prosté...
Jo.
MVCčko je u malých projektů hrozný kanón na vrabce, takže se ti při
učení může zdát, že se spousta věcí dělá uplně zbytečně. Nicméně
to je takto - vemu to trochu obšírněji, ten nadhled je třeba.
Máš Model - což je vlastně jenom překopčená struktura databáze, tak
abys s ní mohl pomocí EF šikovně pracovat. V modelu by se ti nemělo objevit
nic víc, než struktura těch dat a maximálně nějaká validace..
To je ok ne?
Pak máš View- které zobrazuje data a přijímá requesty a posílá je do kontroleru. Z těch jednoduchý tutoriálů by se mohlo zdát, že na jeden Model připadne jedno View - to tak ale vůbec není.
ViewModel je pak slepenec z různých modelů + věci, které potřebuješ jinak než jsou v modelu (třeba celé jméno jako složenina z křestního a příjmení, nebo nějaká bool hodnota, když chci vytvořit checkbox u výběru)... No a to je přesně věc, kterou musíš použít.
V controleru vytvoříš objekt viemodelu, nasypeš tam data z modelu a pošleš do view... Controler je vlastně takový blbeček, který dělá jenom výše popsanou akci, nějakou větší logiku máš buď ve viewmodelu, nebo ve speciálních servisách zase uplně někde jinde.
Best practice je mít pro každé view jiný viewmodel. Což vypadá jakou spousta zbytečných souborů, ale věř mi - vyplatí se to.
jak napsal Lako.. je to proste tak.. musis proste presypat data z modelu (vetsinou entity z EF) do viewmodelu a poslat do view.. a zase naopak.. pri postu to z viewmodelu rozsekat do entit..
Zobrazeno 15 zpráv z 15.