Przeczytałem książkę Professional ASP.NET MVC 1.0, a także czytanie innych źródeł mówiących o użyciu ViewModel zamiast ViewData z kontrolerów do View. Ale widzę tak wiele przykładów ViewData używanych w scenariuszach, które są trudne tam, gdzie nie ma innego sposobu niż uzyskanie czegoś z ViewData. Ale potem czytałem książkę podobną do Pro ASP.NET MVC Framework i wszystko o czym mówi to tylko ViewData, nic o ViewModelu. Czy ViewModel to zupełnie nowa koncepcja?Aby użyć ViewData lub nie używać ViewData
Widzę, że ViewModel jest o wiele lepszym podejściem, ale czy jest to solidna alternatywa? Mam na myśli ViewData jest tak łatwo dostępne w inne rzeczy takie jak obiekt HtmlHelper, gdzie ViewModel nie jest. Lub na przykład użycie go w kontrolce niestandardowej (http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx). Czy używam kombinacji obu w zależności od różnych celów? Co się stanie, jeśli chcę uzyskać dostęp do ViewModel w mojej metodzie Extension z jakiegokolwiek powodu? Zgubiłem się tu, jaką ścieżkę wybrać. Wiem, że ViewData nie jest mocno napisany, ale możesz ustawić swój widok, aby określić typ, a tym samym zrobić typ Viewedata, ale po prostu się zastanawiam. Jest tak wiele wsparcia dla ViewData, ale wiem, że ViewModel jest znacznie bardziej abstrakcyjnym i oddzielnym sposobem, jak również jest wpisywany. Po prostu nie chcę ograniczać się do scenariuszy, w których będę musiał pobrać pewne dane, takie jak ViewData, które są łatwo dostępne z innych obiektów, takich jak klasa HtmlHelper.
Myśli? Standardy? Wzruszenie religijne? Czy jestem trochę zbędny, czy po prostu korzystasz z kombinacji i nadal korzystasz z ViewData w innych okolicznościach niż wysyłanie danych z kontrolera do widoku lub czego?
Jeśli w ogóle nie korzystasz z ViewData i zamiast tego używasz ViewModel ze swoimi kontrolerami, wydaje się, że wszystko lub nic w tym, że używasz ViewModel, a zatem ViewData nie ma celu, ponieważ nie masz go ustawionego z niczym od kontrolerów, więc nie ma w tym momencie zastosowania? Czy myliłem kogoś lub znalazłem drogę tutaj? Mylące z tym piekłem to na pewno.
Nie mówię o ViewData.Model. Mówię o dodatkowej warstwie klas, która żyje pomiędzy Twoimi widokami i kontrolerem "ViewModels", które wykonują pracę, aby uzyskać pewne obiekty z twojego modelu, aby kontroler mógł z nich korzystać zamiast kontrolera pobierającego elementy z twojej warstwy Model. – PositiveGuy