2 Stimmen

ASP.NET MVC2: Wie rendert man eine Ansicht, wenn sie mehrere verschiedene Modelle enthält?

Ich weiß, dass das Ansichtsmodell zum Rendern einer Ansicht verwendet werden kann, aber wenn eine Seite verschiedene Modelle benötigt, wie kann ich sie an die Ansicht übergeben? Und wie kann ich sie verwenden?

8voto

Andrew Hare Punkte 332190

Wenn Sie mehrere Modelle übergeben müssen, erstellen Sie ein allumfassendes Modell, an dem die kleineren Modelle als Eigenschaften hängen.

Nehmen wir zum Beispiel an, Sie wollen eine Seite zur Verwaltung von Benutzergruppen für Ihre Anwendung anzeigen. Sie müssten dann wahrscheinlich eine IEnumerable<UserDisplayModel> und auch ein IEnumerable<GroupDisplayModel> zur Ansicht. Erstellen einer neu Anzeigemodell wie dieses:

class GroupManagementDisplayModel
{
    public IEnumerable<UserDisplayModel> Users { get; set; }
    public IEnumerable<GroupDisplayModel> Groups { get; set; }
}

Übergeben Sie stattdessen Instanzen dieses Modells an Ihre Ansicht.

1voto

Drew Noakes Punkte 282438

Wenn Sie feststellen, dass Sie dies häufig tun möchten und sich nicht viel aus der Erstellung vieler kleiner Typen machen, dann können Sie die .NET 4 dynamic Typ:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

Übergeben Sie in Ihrer Aktion einen anonymen Typ an Ihre Ansicht:

return View(new { Users, Groups });

Sie verweisen auf sie in Ihrer Ansicht, wie Sie es sonst auch tun würden.

Auf diese Weise verlieren Sie Intellisense und die starke Eingabe, aber wenn Sie Ihre Views nicht kompilieren (was eine manuelle Bearbeitung Ihrer .csproj-Datei erfordert und die Build viel langsamer), dann haben Sie sowieso keine Kompilierzeitüberprüfung für Ihre Ansichten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X