Warum hasst ViewData?

8

Ich frage mich, warum jeder hasst ViewData so viel?
 Ich finde es sehr nützlich und praktisch. Ich sage Ihnen warum: In der Regel hat jede Controller-Aktion ein eigenes ViewModel, also wird es nur einmal verwendet und ich finde es sehr mühsam, die ViewData-Klasse jedes Mal zu ändern, wenn ich zusätzliche Daten hinzufügen muss Ändern seines Konstruktors). Stattdessen kann ich in Controller

schreiben %Vor%

und in Sicht

%Vor%

oder für komplexe Typen:

%Vor%

Schreiben einer Controller-Aktion Ich muss nicht zu einer anderen Klasse wechseln, wenn ich einige Daten hinzufügen muss, um sie anzuzeigen. Und ein großes Plus für mich: Kein Überschwemmen Ihres Projekts mit sinnlosen Klassen und Wechsel zwischen ihnen und anderen.
Ich stimme zu, dass die Verwendung von "magischen Zeichenfolgen" zu Fehlern führen kann, die nicht vom Compiler abgefangen werden, aber diese Fehler sind in einem sehr kleinen Teil des Codes lokalisiert und können sehr schnell entdeckt werden. Übrigens, wie denkst du, dass Leute, die mit dynamischen Sprachen arbeiten (Rails, Django), ohne starke Typisierung leben?)

Was halten Sie von ViewData?

    
kilonet 21.10.2010, 13:58
quelle

3 Antworten

7

Ich denke, das geht über das magische String-Argument hinaus. Ich würde argumentieren, dass ViewModels eine gute Sache und keine sinnlosen Klassen sind, weil sie dazu beitragen, dass die Views sauberer und einfacher zu lesen sind als der Zugriff auf ViewData in den Views.

Wenn Sie zu fünf, zehn, zwanzig Daten kommen, die in einer Ansicht angezeigt werden sollen, werden Sie diese Daten wirklich als ViewData übergeben? Es wird Ihre Sicht schwieriger machen und Daten haben keine Bedeutung. Wenn Sie ein ViewModel erstellen und die View für dieses ViewModel stark eintippen, wird der Code nicht nur leichter lesbar, Sie müssen ViewData-Objekte auch über den gesamten Code werfen.

Ich denke, ViewData ist für bestimmte Fälle gut, aber wenn Sie mit einer Menge Daten zu tun haben, kann es meiner Meinung nach leicht missbraucht werden.

    
amurra 21.10.2010, 15:05
quelle
5

Weeellll .....

Warum schreibst du nicht so Klassen?

%Vor%

Sie müssten sie so nennen:

%Vor%

Nun, was ist dümmer?

Siehe auch
Wie machen wir MVC - View-Modelle

    
Robert Harvey 21.10.2010 14:47
quelle
1

Als erstes: Super +1, um mich darüber zu informieren, wie MVC3 Daten anzeigt! Ich wollte etwas in MVC2 finden.
Warum sind Viewdata schlecht? Ich glaube nicht, dass es so lang ist, wie es spärlich verwendet wird und in Erwartungen getestet wird. Es gibt zwei Hauptprobleme bei der Verwendung von viewdata:

1) Das Fehlen von viewdata verursacht Ausnahmen in einer Ansicht, die nicht vom Compiler abgefangen werden. Ich habe mich selbst mit diesem Problem geholfen, indem ich nicht das viel gewölbte T4MVC-Template verwendet habe (obwohl ich es empfehle) und stattdessen selbst etwas ähnliches "schreibe":

%Vor%

Wenn ich dies zurückgebe, wird mir mein IntelliSense-Programm einen Hinweis geben. View (ViewConstants.Home.Index); Wenn ich genug T4 wüsste, um T4MVC zu ändern, um das für mich zu tun, würde ich zurückgehen, um das zu erzeugen;)

2) Tippfehler sind ein Schmerz. Aus diesem Grund verwende ich, wie Sie oben sehen werden, eine statische Klasse nicht nur für View-Namen, sondern auch für View-Indexer. Wenn ich ViewData verwende, wird Code auf meinen Seiten wie folgt angezeigt:

%Vor%

Wenn Sie diese beiden Schwachstellen im Zaum halten und die Nutzung auf einem akzeptablen niedrigen Niveau halten können, hat viewdata seine Vorteile und sollte nicht übersehen werden.

    
ARM 21.10.2010 14:49
quelle

Tags und Links