Zasadniczo model i model widoku są prostymi klasami z atrybutami.
Głównym celem tych klas jest opisanie („Modelowanie”) obiektu dla odpowiednich odbiorców, którymi są odpowiednio kontroler i widok.
Więc masz całkowitą rację, kiedy mówisz
W moim rozumieniu jest to rodzaj Modelu, który ma określony cel interakcji z Widokiem
Tak więc, podczas gdy klasy modelu są w rzeczywistości encjami domeny, z którymi współpracuje aplikacja, modele widoków są prostymi klasami, z którymi współdziałają widoki.
Mam nadzieję, że to pomoże :)
Aktualizacja :
Firma Microsoft opracowała wyspecjalizowaną wersję wzorca prezentacji autorstwa Martina Fowlera w dużej mierze opartą na modelu Model-View-Controller i nazwał go Model-View-ViewModel (MVVM) dla aplikacji PF. Ten wzorzec jest przeznaczony dla nowoczesnych platform programistycznych UI, w których programiści UI mają inne wymagania oparte bardziej na logice biznesowej niż tradycyjni deweloperzy. Spójrz tutaj na trochę teorii
Mówiąc najprościej, lubię myśleć o następujących rzeczach:
Model: Ściśle wygląda i działa jak model danych. Pod każdym względem jest to tylko reprezentacja klasowa modelu danych. Nie ma wiedzy o Twoim Widoku ani żadnych elementach w Twoim Widoku. To powiedziawszy, nie powinien zawierać żadnych dekoratorów atrybutów (tj. Wymagane, Długość itp.), Których użyłbyś w swoim Widoku.
Widok modelu: służy jako łącznik danych między widokiem a modelem, aw wielu przypadkach jest również opakowaniem dla Twojego modelu. Byłby bezużyteczny bez widoku, więc zazwyczaj nie można go ponownie użyć w wielu widokach i kontrolerach, tak jak w przypadku standardowego modelu.
Na przykład model może mieć następujące właściwości, które są bezpośrednimi reprezentacjami źródła danych:
public string FirstName { get; set; } public string LastName { get; set; }
Teraz, ponieważ model widoku jest powiązany z widokiem, może mieć następującą właściwość - która łączy pola FirstName i LastName modelu razem jako jeden ciąg:
[Display(Name = "Customer Name")] public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}
źródło
Uważam, że ten artykuł jest bardzo przydatnym źródłem informacji, w jaki sposób „Model domeny” i „Model widoku” współdziałają w aplikacji MVC, szczególnie w odniesieniu do wiązania. Najlepszy ze wszystkich zawiera przykłady zamiast abstrakcyjnych opisów.
„Odkąd ukazał się MVC, zauważyłem wiele nieporozumień co do tego, jak najlepiej konstruować modele widoku. Czasami to zamieszanie nie jest bez powodu, ponieważ wydaje się, że nie ma mnóstwa informacji na temat zaleceń dotyczących najlepszych praktyk. Ponadto nie ma rozwiązanie „jeden rozmiar dla wszystkich”, które działa jak srebrny pocisk. W tym poście opiszę kilka z głównych wzorców, które się pojawiły, oraz wady / zalety każdego z nich. Należy zauważyć, że wiele z tych wzorców wyłoniły się z ludzi rozwiązujących rzeczywiste problemy ”.
http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx
źródło
WikiPedia ma pełniejszy opis Model vs ModelView niż w odpowiedzi SO: http://en.wikipedia.org/wiki/Model_View_ViewModel
Cytuję:
Model : podobnie jak w klasycznym wzorcu MVC, model odnosi się do (a) modelu obiektowego, który reprezentuje zawartość stanu rzeczywistego (podejście obiektowe), lub (b) warstwy dostępu do danych, która reprezentuje tę zawartość ( podejście centryczne).
Widok : tak jak w klasycznym wzorcu MVC, widok odnosi się do wszystkich elementów wyświetlanych przez GUI, takich jak przyciski, okna, grafika i inne kontrolki.
ViewModel : ViewModel jest „modelem widoku”, co oznacza, że jest abstrakcją widoku, która służy również w powiązaniu danych między widokiem a modelem. Można to postrzegać jako wyspecjalizowany aspekt tego, co byłoby kontrolerem (we wzorcu MVC), który działa jako spinacz / konwerter danych, który zmienia informacje o modelu na informacje o widoku i przekazuje polecenia z widoku do modelu. ViewModel uwidacznia właściwości publiczne, polecenia i abstrakcje. ViewModel został porównany do koncepcyjnego stanu danych w przeciwieństwie do rzeczywistego stanu danych w modelu.
źródło
Istnieje pojęcie ViewModel, ale zazwyczaj nie jest ono związane z Asp.net MVC. MVC używa wzoru kontrolera widoku modelu, w którym kontroler obsługuje interakcje, tworzy dane z modelu, a następnie przekazuje te dane do widoku w celu wyświetlenia.
ViewModels (i wzorzec ViewModel widoku modelu) jest bardziej ogólnie skojarzony z Silverlight i WPF. Xaml jest nieco inny, ponieważ widoki mogą wykonywać dwukierunkowe powiązanie z ViewModels, więc technologia jest nieco inna. Na przykład, jeśli powiążesz pole tekstowe z polem, podczas pisania w tym polu tekstowym wartość pola jest aktualizowana dynamicznie. Ten rodzaj interakcji nie jest naprawdę możliwy na stronach internetowych, ponieważ strony internetowe są bezpaństwowe.
Podobieństwo między tymi dwoma wzorami polega na tym, że oba próbują oddzielić logikę od wyświetlacza. Najczęstszym zastosowaniem / powodem tego jest testowanie: chcesz mieć możliwość wykonywania z kodu (za pośrednictwem struktury testowej) wszystkich interakcji, które użytkownik wywoła za pośrednictwem interfejsu użytkownika.
źródło