ViewData verwenden oder ViewData nicht verwenden

8

Ich habe das Professional ASP.NET MVC 1.0-Buch gelesen und lese andere Quellen, die davon sprechen, ViewModel anstelle von ViewData von Ihren Controllern zu Views zu verwenden. Aber dann sehe ich so viele Beispiele von ViewData, die in schwierigen Szenarien verwendet werden, wo es keinen anderen Weg gibt, als etwas von ViewData zu bekommen. Aber dann lese ich ein Buch wie Pro ASP.NET MVC Framework und alles, worüber er spricht, ist nur ViewData, nichts über ViewModel. Also ist ViewModel ein sehr neues Konzept oder was?

Ich sehe, dass ViewModel ein viel besserer Ansatz ist, aber ist es eine solide Alternative? Ich meine, ViewData steht Ihnen in anderen Dingen wie dem HtmlHelper-Objekt, wo ViewModel nicht verfügbar ist, so leicht zur Verfügung. Oder Sie verwenden es beispielsweise in einem benutzerdefinierten Steuerelement ( Ссылка ). Also verwende ich eine Kombination von beiden abhängig von verschiedenen Zielen oder was? Was ist, wenn ich aus irgendeinem Grund auf das ViewModel in meiner Extension-Methode zugreifen möchte? Ich bin hier verloren, welchen Weg ich nehmen soll. Ich weiß, dass ViewData nicht stark typisiert ist, aber dass Sie Ihre Ansicht festlegen können, um den Typ anzugeben und daher Ihre ViewData typisiert, aber ich frage mich nur. Es gibt so viel Unterstützung für ViewData, aber ich weiß, ViewModel ist eine viel abstraktere und getrennt zu gehen sowie zu tippen. Ich möchte mich nur nicht in Situationen kurzschließen, in denen ich bestimmte Daten wie die ViewData abrufen muss, auf die andere Objekte wie die HtmlHelper-Klasse leicht zugreifen können.

Gedanken? Standards? Erfahrungen? Bin ich ein bisschen weg oder nimmst du einfach eine Combo und benutzt ViewData immer noch unter anderen Umständen als nur Daten von deinem Controller zu deinem View zu senden oder was?

Und wenn Sie ViewData überhaupt nicht verwenden und stattdessen ViewModel mit Ihren Controllern verwenden, scheint es, dass Sie ViewModel als Alles oder Nichts verwenden, und ViewData hat daher keinen Zweck, da Sie es nicht mit irgendetwas von eingestellt haben Ihre Controller, so dass es zu diesem Zeitpunkt keinen Nutzen hat ?? Verwechsle ich jemanden oder so weit weg? Verwirrend die Hölle aus mir selbst, das ist sicher.

    
PositiveGuy 17.06.2009, 03:20
quelle

2 Antworten

2

Nun, ViewData ist eine ziemlich schnell zu implementierende Methode. Allerdings gibt es eine Menge String-Literal-Passing, was normalerweise keine gute Sache ist. Sie könnten das lösen, indem Sie einige String-Konstanten verwenden, was ich mit Session-Variablen mache, aber ich denke, hier ist ein ViewModel ein viel besserer Ansatz. Jedes Mal, wenn Sie ViewData verwenden können, können Sie auch ein ViewModel verwenden. Das ViewModel muss nicht nur Ihr Domänenobjekt sein. Es könnte sich um eine Hilfsklasse handeln, die nicht nur ein Domänenobjekt, sondern auch einige zusätzliche Eigenschaften enthält, die für Ihre Ansicht spezifisch sind. deshalb ist es da. Also, mit dem ViewModel, haben Sie den Compiler, der Ihnen hilft, und aus einer OO-Perspektive ist es weit sauberer, als nur Schlüssel an ein Wörterbuch zu übergeben.

Ich denke MVC bietet hier einen guten Ansatz. Es bietet und schnell und schmutzig (nicht unbedingt eine schlechte Sache) für diejenigen, die es "einfach machen müssen" und einen saubereren Ansatz, die beide sehr einfach zu bedienen sind.

Wenn Sie Scott Gurthies ASP.NET MVC Tutorial nicht gelesen haben; Ich empfehle es sehr:

Ссылка

    
BobbyShaftoe 17.06.2009 04:36
quelle
1

Jetzt betrachten Sie Modelle als nützliches Programmierungsmuster. Lesen Sie diesen Artikel von Stephen Walther, zum Beispiel: ASP.NET MVC Tipp # 50 - Erstellen Sie Ansichtsmodelle

    
Alexander Prokofyev 17.06.2009 05:33
quelle

Tags und Links