Czy do widoku powinienem przekazywać ViewModel?

Czy do widoku powinienem przekazywać ViewModel?
0

Czy do widoku powinienem przekazywać ViewModel czy model w asp.net?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0

ViewModel jak sama nazwa wskazuje

0

Czyli ViewModel za każdym razem mam przekazywać do widoku? Tylko czy to wtedy będzie MVC?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
1

Nie mam pojęcia, to zależy od tego, czy trzymasz się zasad MVC. Samo przekazywanie ViewModeli zamiast Modelu tego nie oznacza.

Tak ogólnie, to przecież już o to pytałeś tutaj

edytowany 1x, ostatnio: somekind
0

Tak pytałem. Tylko według tamtego tematu nie byłoby to MVC, wię chciałem się upewnić. Czyli więc jednak korzystanie z ViewModeli nie oznacza braku korzystania z MVC.

0

ViewModel uzywasz jak pomiedzy akcja j widokiem. Modelu uzywasz pomiedzy akcja i baza. Taka konwencja. To jest MVC.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
1

Korzystanie z ViewModeli ani nie potwierdza ani nie zaprzecza zgodności z MVC. Tak samo jak nie robi tego korzystanie z pęli for albo bazy danych.

0

A można zamiast ViewModelu do widoku przekazywać encje?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
1

Też można, tylko wtedy to jest "encja na twarz i pchasz", a nie MVC.

0

A czym się różni ViewModel od encji oprócz nazwy ? Czy do struktury bazy danych zawsze muszę używać struct zamiast class?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
1
Zimny Mleczarz napisał(a):

A czym się różni ViewModel od encji oprócz nazwy ?

Tym, że reprezentuje to, co chcesz pokazać w GUI, a nie obiekt biznesowy z operacjami ani też obiekt służący do zapisywania w bazie danych.

Czy do struktury bazy danych zawsze muszę używać struct zamiast class?

Nigdy tak nie rób.

0

Nigdy tak nie rób.

Dlaczego?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
1

Bo po pierwsze będzie niewydajne, po drugie pewnie nie ogarniesz debugowania tego, a po trzecie i najważniejsze - po co tak robić?

Aventus
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
2

ViewModele i modele to tylko klasy. To co je odróżnia to fakt że pierwszy jest używany w widoku (jak sama nazwa wskazuje) natomiast drugi w logice biznesowej. Może się zdarzyć że zarówno model widoku jak j model biznesowy będą miały te same właściwości - w modelu widoku dodatkowo możesz również mieć np. atrybuty służące do walidacji. To jest coś czego nie chcesz miec w modelach biznesowych/domenowych, stąd potrzeba rozdzielenia tych koncepcji.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
0

ViewModele i modele to tylko klasy. To co je odróżnia to fakt że pierwszy jest używany w widoku (jak sama nazwa wskazuje) natomiast drugi w logice biznesowej. Może się zdarzyć że zarówno model widoku jak j model biznesowy będą miały te same właściwości - w modelu widoku dodatkowo możesz również mieć np. atrybuty służące do walidacji. To jest coś czego nie chcesz miec w modelach biznesowych/domenowych, stąd potrzeba rozdzielenia tych koncepcji.

No ale tam pisze też model ---> ViewMODEL. Czyli ViewModel powinien też być używany w logice biznesowej...?

a_s_f
  • Rejestracja:ponad 22 lata
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
1

Nie, ViewModel to jest taki "zlepek" tego, co chcesz w danym momencie pokazać użytkownikowi.

edytowany 1x, ostatnio: a_s_f
0

Nie, ViewModel to jest taki "zlepek" tego, co chcesz w danym momencie pokazać użytkownikowi.

Czyli może zawierać politykę tego co chcę pokazać, co za tym idzie, część logiki biznesowej... Dlaczego wy mnie kłamiecie?. hehe ;)

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0

"mnie kłamiecie" - w jakim to języku?

Nikt Cię nie oszukuje, po prostu złośliwie i uporczywie nie chcesz zrozumieć, że viewmodel ma nie zawierać żadnej logiki a jedynie dane.

edytowany 1x, ostatnio: somekind
Aventus
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
1
Zimny Mleczarz napisał(a):

ViewModele i modele to tylko klasy. To co je odróżnia to fakt że pierwszy jest używany w widoku (jak sama nazwa wskazuje) natomiast drugi w logice biznesowej. Może się zdarzyć że zarówno model widoku jak j model biznesowy będą miały te same właściwości - w modelu widoku dodatkowo możesz również mieć np. atrybuty służące do walidacji. To jest coś czego nie chcesz miec w modelach biznesowych/domenowych, stąd potrzeba rozdzielenia tych koncepcji.

No ale tam pisze też model ---> ViewMODEL. Czyli ViewModel powinien też być używany w logice biznesowej...?

A co ma słowo model do logiki biznesowej? Lepiej nie kupuj żadnego telefonu. Sprzedawca spyta Cie jaki model Cie interesuje a Ty wyskoczysz z tekstem że przecież to telefon a nie logika biznesowa więc co on Ci z jakimiś modelami wyjeżdża.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
edytowany 1x, ostatnio: Aventus
0

Nikt Cię nie oszukuje, po prostu złośliwie i uporczywie nie chcesz zrozumieć, że viewmodel ma nie zawierać żadnej logiki a jedynie dane.

Chodzi mi o to, że nie widzę nic złego w dodaniu attrybutów do ViewModel lub użyciu ViewModelu w delegacie aby zakreślić jakąś regułe. Chodzi mi o ogólne wykorzystanie metadanych ViewModelu do wpływania na zachowanie logiki "biznesowej", Jak ma to miejscę np. w PizzyFramework.

Orkeślenie ViewModelu jako zlepek tego co chcesz pokazać to moim zdaniem słaby pomysł. ;)

0

A co ma słowo model do logiki biznesowej? Lepiej nie kupuj żadnego telefonu. Sprzedawca spyta Cie jaki model Cie interesuje a Ty wyskoczysz z tekstem że przecież to telefon a nie logika biznesowa więc co on Ci z jakimiś modelami wyjeżdża.

Haha,

Ja mam inaczej. Jak zamawiam pokój w hotelu to mówie z modelem widoku na morze, żeby czasem się nie okazało, że zamówiłem pokój bez okien. hahahah.... No bo bez modelu to i widoku by nie było.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0
Zimny Mleczarz napisał(a):

Chodzi mi o to, że nie widzę nic złego w dodaniu attrybutów do ViewModel lub użyciu ViewModelu w delegacie aby zakreślić jakąś regułe. Chodzi mi o ogólne wykorzystanie metadanych ViewModelu do wpływania na zachowanie logiki "biznesowej"

Ale jakie reguły, jaką logikę biznesową? Wyłączanie edycji, wyświetlanie w trybie tylko do odczytu, wybór kontrolki użytej do edycji to wszystko jest logika prezentacji, a nie biznesowa. Walidacja inputu to też nie jest logika biznesowa.

Orkeślenie ViewModelu jako zlepek tego co chcesz pokazać to moim zdaniem słaby pomysł. ;)

To określaj sobie inaczej, możesz nawet prowadzić prelekcje o tym w ramach jakiegoś freak show.

0

Ale jakie reguły, jaką logikę biznesową? Wyłączanie edycji, wyświetlanie w trybie tylko do odczytu, wybór kontrolki użytej do edycji to wszystko jest logika prezentacji, a nie biznesowa. Walidacja inputu to też nie jest logika biznesowa.

A to że klient aplikacji chce wyświetlić cene produktu, lub grupować, oraz sortować produkty to są wymagania biznesu czy samej aplikacji.?

Z czym ty w oglóle znowu wyjeżdzasz, mnie nie chodzi o wybór kontrolek, tylko ich określenie z nie wielką pomocą spójnego obiektu jakim jest ViewModel.

Jak masz kwadratową głowę od pisania struktury w stulu 5 serwisów dlatego, że akurat każdy używa innej kontrolki to twój problem. Widzę, że znowu na siłe starasz się przekonać innych do tego, że masz rację.

0

Chodzi mi o logikę powiązaną z tymi kontrolkami. W stylu co się stanie jeśli Fillter.Like

0

Chodzi o to że metadanymi z VM. Możesz wpływać na działanie logiki związanej z pobieraniem danych tak samo jak na ich wyświetlanie w logice widoku. Dlatego to się nazywa VM i jest ogniwem łączącym jedno z drugim.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0
Zimny Mleczarz napisał(a):

A to że klient aplikacji chce wyświetlić cene produktu, lub grupować, oraz sortować produkty to są wymagania biznesu czy samej aplikacji.?

Biznesu, tylko jaki to ma związek z dyskusją? Czy viewmodel odpowiada za grupowanie i sortowanie? Bo viewmodel to bierny pojemnik na dane, struktura która jest przekazywana z warstw wewnętrznych do do wyświetlenia w warstwie prezentacji.

Z czym ty w oglóle znowu wyjeżdzasz, mnie nie chodzi o wybór kontrolek, tylko ich określenie z nie wielką pomocą spójnego obiektu jakim jest ViewModel.

No i to jest właśnie logika prezentacji.

Widzę, że znowu na siłe starasz się przekonać innych do tego, że masz rację.

Nie muszę nikogo przekonywać, tak po prostu jest, bo taka jest rzeczywistość. Nie chcesz - nie akceptuj i wracaj do swojego cyrku.

PS. Czemu nie piszesz z konta?

0

No ale przecież samo WPF czy ASP. Nie udostępnia takich atrubutów dlatego oczywiście, jeszcze nikt nie wpad na taki pomysł no bo to jest za trudne dla większości forumowiczów.

0

PS. Czemu nie piszesz z konta?

Ponieważ mam do tego prawo.

Biznesu, tylko jaki to ma związek z dyskusją? Czy viewmodel odpowiada za grupowanie i sortowanie? Bo viewmodel to bierny pojemnik na dane, struktura która jest przekazywana z warstw wewnętrznych do do wyświetlenia w warstwie prezentacji.

No to widoczne jeszcze nie odkyłeś tego, że za pomocą metadanych VM i Pewsistance możesz generować zapytania do bazy dynamicznie.

0

Z wykorzystaniem odpowiedniego algorytmu, który będzie te metadane przetwarzał.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0
Zimny Mleczarz napisał(a):

No ale przecież samo WPF czy ASP. Nie udostępnia takich atrubutów dlatego oczywiście, jeszcze nikt nie wpad na taki pomysł no bo to jest za trudne dla większości forumowiczów.

A co ma rzekoma trudność dla forumowiczów do ogólnie przyjętych na świecie wzorców? :)

No to widoczne jeszcze nie odkyłeś tego, że za pomocą metadanych VM i Pewsistance możesz generować zapytania do bazy dynamicznie.

Oczywiście, nie wpadłem. Tak sobie tłumacz. :D :D :D
Automatyczne generowanie zapytań do bazy na podstawie viewmodeli nie zmienia faktu, że viewmodel to pojemnik na dane do wyświetlenia.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)