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.
Zobrazeno 15 zpráv z 15.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
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.
