Frage

Ich nutze den Viewbag in meiner MVC -Anwendung stark. Ist das als schlechte Praxis angesehen? Ich bin mir nicht sicher, ob ich Zeit damit verbringen soll, ViewModels zu erstellen (aber ich dachte, dass das eher für MVVM als für MVC geeignet war) oder den Viewbag weiterhin stark zu verwenden. Was sind die Argumente für und dagegen? Beispiel Controller -Methode würde das Modell (im Allgemeinen eine einfache Domänenentität) sowie die folgenden Anrufe zum Viewbag zurückgeben:

            ViewBag.TotalItems = data.Count();
        ViewBag.FilteredItems = gridFilters;
        ViewBag.Action = "Events";
        ViewBag.Area = "People";
        ViewBag.EntityID = person.EntityID;
        ViewBag.OrganisationID = ID;
        ViewBag.Name = string.Format("{0} {1}", person.FirstName, person.LastName);
        ViewBag.IsEnabled = person.IsEnabled;
        ViewBag.EntityID = person.EntityID;
        ViewBag.Favourited = users.IsOnUserFavourites(person.EntityID);

        ViewBag.Columns = userColumns;

        ViewBag.Title = "Person : " + string.Format("{0} {1}", person.FirstName, person.LastName) + " - Events";
War es hilfreich?

Lösung

Fragen wie diese erhalten normalerweise Antworten von beiden Seiten des Zauns. Viele Menschen sind der Meinung, dass es ein schlechtes Design ist, wie dieses ein schlechtes Design zu verwenden (ich selbst eingeschlossen). Es macht Ihre Controller weniger überprüfbar. Ihre Ansichten sind nicht stark tippt usw.

Es ist normalerweise eine gute Praxis, a zu verwenden ViewModel. Erstellen Sie ein Modell, das spezifisch für die angezeigte Ansicht ist, anstatt Ihr Modell ein Domänenmodell zu haben. Auf diese Weise kann es zu 100% kundenspezifisch auf das zugeschnitten sein, was Sie für diese bestimmte Ansicht benötigen. Sie werden feststellen, dass Sie nicht wirklich viel verwenden müssen, wenn Sie dies tun. Es kann manchmal viel zusätzlicher Code erstellen (ein Ansichtsmodell pro Ansicht), aber der Code ist ziemlich einfach und eine Änderung zu einer Ansicht wird keine anderen durchbricht.

Andere Tipps

Warum nicht Person als Modell verwenden? Auf diese Weise können Sie eine stark typisierte Ansicht verwenden. Meine persönliche Meinung ist, dass der Viewbag so ziemlich "magische Saiten" ist und obwohl sie in kleinem Maßstab gut funktioniert, in dem Sie der einzige Entwickler sind, zwingen Sie in größeren Anwendungen und Projekten ziemlich alle, sich daran zu erinnern, was alle magischen Zeichenfolgen sind. Außerdem erhalten Sie keine Art Sicherheit, die Sie mit einem Modell und einer stark typisierten Ansicht verwenden würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top